Format einer Nachricht mit MessageFormat.format() in Java
Ich habe einige Nachrichten gespeichert, die in einem resource bundle. Ich versuche zu formatieren, diese Meldungen wie folgt.
import java.text.MessageFormat;
String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);
Davon ausgehen, dass der erste parameter ich.e die eigentliche Nachricht gespeichert ist, in einer property-Datei, die ist irgendwie abgerufen werden.
Den zweiten parameter ich.e 5 ist ein dynamischer Wert und sollte in die Platzhalter {0}
was nicht passieren. Die nächste Zeile druckt,
Youre zu löschen {0} Zeilen.
Der Platzhalter wird nicht ersetzt durch den aktualparameter.
Es ist der Apostroph hier - You're
. Ich habe versucht zu entkommen, wie üblich, wie You\\'re
aber es hat nicht funktioniert. Welche Veränderungen sind notwendig, damit es funktioniert?
InformationsquelleAutor der Frage Tiny | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie ein zusätzliches Apostroph
'
zu denMessageFormat
MusterString
zu gewährleisten'
Zeichen angezeigtEinem Apostroph (aka single quote) in ein MessageFormat pattern beginnt eine Zeichenfolge in Anführungszeichen ein und interpretiert Sie auf seine eigene. Aus der javadoc
Den
String
You\\'re
ist gleichwertig mit dem hinzufügen eines backslash-Zeichen auf derString
also der einzige Unterschied wird sein, dassYou\re
produziert werden, anstattYoure
. (bevor Anführungszeichen Lösung''
angewendet)InformationsquelleAutor der Antwort Reimeus
Nur sicher sein, Sie haben doppelten Apostroph (")
Edit:
Quelle http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html
InformationsquelleAutor der Antwort Adhikari
Müssen Sie die Verwendung von Doppel-Apostroph anstelle von einzelnen, in der "Sie"neu", z.B.:
InformationsquelleAutor der Antwort FOOM
Für alle, Android hat Probleme in der string.xml verwenden Sie \'\' anstelle von einzelnen zitieren.
InformationsquelleAutor der Antwort Uriel Frankel
Verwenden einen Apostroph
’
(Unicode:\u2019
) statt einem Apostroph'
wurde das Problem behoben, ohne die Verdoppelung der\'
.InformationsquelleAutor der Antwort T Efron