Formatieren Sie eine Nachricht mit MessageFormat.format() in Java
Lesezeit: 2 Minuten
Sehr klein
Ich habe einige Nachrichten in einem Ressourcenpaket gespeichert. Ich versuche, diese Nachrichten wie folgt zu formatieren.
import java.text.MessageFormat;
String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);
Angenommen, der erste Parameter, dh die eigentliche Nachricht, ist in einer Eigenschaftsdatei gespeichert, die irgendwie abgerufen wird.
Der zweite Parameter, dh 5, ist ein dynamischer Wert und sollte im Platzhalter platziert werden {0} was nicht passiert. Die nächste Zeile wird gedruckt,
Sie sind im Begriff, {0} Zeilen zu löschen.
Der Platzhalter wird nicht durch den eigentlichen Parameter ersetzt.
Es ist das Apostroph hier – You're. Ich habe versucht, ihm wie gewohnt zu entkommen You\\'re obwohl es nicht funktioniert hat. Welche Änderungen sind erforderlich, damit es funktioniert?
Reimäus
Fügen Sie ein zusätzliches Apostroph hinzu ' zum MessageFormat Muster String die zu gewährleisten ' Zeichen angezeigt
String text =
java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
^
Ein Apostroph (aka einzelnes Zitat) in einem MessageFormat-Muster beginnt eine Zeichenfolge in Anführungszeichen und wird nicht eigenständig interpretiert. Von dem javadoc
Ein einfaches Anführungszeichen selbst muss in einem String durch doppelte einfache Anführungszeichen ” dargestellt werden.
Das StringYou\\'re entspricht dem Hinzufügen eines Backslash-Zeichens zum String also wird der einzige unterschied sein You\re produziert wird, anstatt Youre. (vor der Lösung mit doppelten Anführungszeichen '' angewandt)
Gibt es eine andere Methode, um ein solches Format zu erstellen, ohne einfache Anführungszeichen in doppelte einfache Anführungszeichen zu konvertieren? weil es nervt.
– Mostafa Vatanpour
3. Februar 2018 um 13:44 Uhr
Warum muss ich das in C# nicht machen?
– Alex78191
18. Februar 2019 um 15:58 Uhr
Adhikari
Stellen Sie nur sicher, dass Sie doppeltes Apostroph (”) verwendet haben.
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
System.out.println(text);
Bearbeiten:
Innerhalb eines Strings kann ein Paar einfacher Anführungszeichen verwendet werden, um beliebige Zeichen außer einfachen Anführungszeichen zu zitieren. Beispielsweise stellt die Musterzeichenfolge “‘{0}'” die Zeichenfolge “{0}” dar, kein FormatElement. …
Jede nicht übereinstimmende Notierung wird am Ende des gegebenen Musters als geschlossen behandelt. Beispiel: Musterzeichenfolge “‘{0}” wird als Muster behandelt “‘{0}‘“.