Primitive Frage, aber wie formatiere ich Zeichenfolgen wie folgt:
"Schritt {1} von {2}"
durch Ersetzen von Variablen mit Java? In C # ist es einfach.
java
string
string-formatting
katit
quelle
quelle
Antworten:
Schauen Sie sich neben String.format auch an
java.text.MessageFormat
. Das Format ist weniger knapp und liegt etwas näher an dem von Ihnen angegebenen C # -Beispiel. Sie können es auch zum Parsen verwenden.Beispielsweise:
Ein schöneres Beispiel nutzt die Verbesserungen von Varargs und Autoboxing in Java 1.5 und verwandelt das oben Genannte in einen Einzeiler:
MessageFormat
ist ein bisschen schöner, wenn man mit dem Auswahlmodifikator i18nisierte Pluralformen macht. Um eine Nachricht anzugeben, die die Singularform korrekt verwendet, wenn eine Variable 1 und ansonsten Plural ist, können Sie Folgendes tun:quelle
MessageFormat.format("Number {0}", 1234));
abhängig vom StandardgebietsschemaNumber 1,234
anstelle von erzeugt werdenNumber 1234
.{0} it ll take firstname
, wann{1} then lastname
, wie so. Ist es so{0,choice,0.getFirstName()}
oder so möglich ?Schauen Sie sich String.format an . Beachten Sie jedoch, dass Formatbezeichner erforderlich sind, die denen der printf-Funktionsfamilie von C ähnlich sind - zum Beispiel:
Würde "Hallo Welt, 42" zurückgeben. Sie können feststellen , diese hilfreich , wenn man über den Formatbezeich lernen. Andy Thomas-Cramer war so freundlich, diesen Link in einem Kommentar unten zu hinterlassen , der auf die offizielle Spezifikation zu verweisen scheint. Die am häufigsten verwendeten sind:
Dies unterscheidet sich grundlegend von C #, bei dem Positionsreferenzen mit einem optionalen Formatbezeichner verwendet werden.
Das bedeutet, dass Sie Dinge wie:...
ohne den an printf / format übergebenen Parameter tatsächlich zu wiederholen.(siehe den Kommentar von The Scrum Meister unten)Wenn Sie das Ergebnis nur direkt drucken möchten, finden Sie möglicherweise System.out.printf ( PrintStream.printf ) nach Ihren Wünschen.
quelle
String.format
kann auch numerische Positionen einnehmen:String.format("%2$s %1$s", "foo", "bar");
wird ausgegebenbar foo
Wenn Sie String.format nicht verwenden, ist die andere Option der binäre Operator +
Dies entspricht
new StringBuilder("Step ").append(String.valueOf(1)).append(" of ").append(String.valueOf(2));
Was auch immer Sie verwenden, ist Ihre Wahl. StringBuilder ist schneller, aber der Geschwindigkeitsunterschied ist gering. Ich bevorzuge die Verwendung des
+
Operators (der a ausführtStringBuilder.append(String.valueOf(X)))
und es leichter zu lesen findet.quelle
+
Operator funktioniert. 2) Ihre Erklärung ist nicht einmal richtig.+
ist gleichbedeutend mit verwendenStringBuilder
, nichtString.concat
. (Viel zu viele Informationen dazu.)Ich habe meine einfache Methode dafür geschrieben:
Sie können es also verwenden als:
quelle
Java-Lösung
Das "-" wird verwendet, um den Einzug zu verlassen
Die "15" bewirkt, dass die Mindestlänge des Strings 15 beträgt
quelle
Diese Lösung hat bei mir funktioniert. Ich musste URLs für einen REST-Client dynamisch erstellen, also habe ich diese Methode erstellt, sodass Sie die restURL nur so übergeben müssen
und fügen Sie so viele Parameter hinzu, wie Sie benötigen:
Sie müssen diese Methode nur so aufrufen:
Die Ausgabe
quelle
Ich habe diese Funktion geschrieben, sie macht genau das Richtige. Interpolieren Sie ein Wort, das mit
$
dem Wert der gleichnamigen Variablen beginnt .quelle