In einem Java-Programm verwende ich eine Zeichenfolge mit Formatter.format()
Funktion, die ich vom Server bekomme. Ich kann nicht sicher sein, dass String
formatiert Platzhalter oder eine gültige Anzahl von ihnen hat. Wenn es die String
nicht wie erwartet ist, möchte ich eine Ausnahme auslösen - oder es irgendwie protokollieren.Anzahl der Platzhalter in Formatter.format() String
An diesem Punkt ist mir egal, welche Art von Platzhaltern sind (String
, Integer
, ...), ich möchte nur die Anzahl der erwarteten Parameter für jeden String erhalten.
Was ist der einfachste Weg, dies zu erreichen? Eine Möglichkeit wäre, eine Regex zu verwenden, aber ich denke, wenn es etwas Bequemeres gibt - zum Beispiel eine eingebaute Funktion.
Hier sind einige Beispiele:
Example String | number of placeholders:
%d of %d | 2
This is my %s | 1
A simple content. | 0
This is 100% | 0
Hi! My name is %s and I have %d dogs and a %d cats. | 3
EDIT: Formatter.format() löst eine Ausnahme aus, wenn nicht genügend zur Verfügung gestellt Parameter sind. Es besteht die Möglichkeit, dass ich einen String ohne Platzhalter bekomme. In diesem Fall, selbst wenn ich Parameter zur Verfügung stelle (wird weggelassen), wird keine Ausnahme geworfen (obwohl ich eine werfen möchte), nur dass der String-Wert zurückgegeben wird. Ich muss den Fehler dem Server melden.
Auf welche Weise kann es sein, "nicht das, was Sie erwarten"? Vermutlich kennen Sie die Anzahl der Platzhalter, die Sie erwarten - können Sie einfach versuchen, mit Standardwerten zu formatieren und zu sehen, ob es fehlschlägt? –
Ich weiß nicht über eine eingebaute Funktion, aber mein erster Gedanke ist Regex ist der Weg zu gehen. Haben Sie spezielle Bedenken bezüglich der Verwendung von Regex? – Hill
@AndyTurner Ich war nicht klar genug. Ich weiß, dass Format-Methode eine Ausnahme auslöst, wenn ich nicht genug Parameter zur Verfügung stelle. Mein Problem ist, dass ich eine Exception werfen möchte, auch wenn ich zu viele Parameter zur Verfügung stelle, deshalb würde ich die Anzahl der Platzhalter benötigen. – urgas9