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, wird in einer Eigenschaftendatei gespeichert, die irgendwie abgerufen wird.
Der zweite Parameter, dh 5, ist ein dynamischer Wert und sollte in den Platzhalter eingefügt werden, {0}
was nicht der Fall ist. Die nächste Zeile wird gedruckt,
Du bist dabei, {0} Zeilen zu löschen.
Der Platzhalter wird nicht durch den aktuellen Parameter ersetzt.
Es ist der Apostroph hier - You're
. Ich habe versucht, wie gewohnt zu entkommen, als You\\'re
ob es nicht funktioniert hätte. Welche Änderungen sind erforderlich, damit es funktioniert?
quelle
Stellen Sie nur sicher, dass Sie einen doppelten Apostroph ('') verwendet haben.
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); System.out.println(text);
Bearbeiten:
Quelle http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html
quelle
Sie müssen im "Sie sind" einen doppelten Apostroph anstelle eines einfachen verwenden, z.
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5); System.out.println(text);
quelle
Verwenden Sie für alle, die Android-Probleme in der Datei string.xml haben, \ '\' anstelle von einfachen Anführungszeichen.
quelle
Die Verwendung eines Apostrophs
’
(Unicode :)\u2019
anstelle eines einfachen Anführungszeichens'
behebt das Problem, ohne das zu verdoppeln\'
.quelle
Hier ist eine Methode, bei der der Code nicht bearbeitet werden muss und die unabhängig von der Anzahl der Zeichen funktioniert.
String text = java.text.MessageFormat.format( "You're about to delete {0} rows.".replaceAll("'", "''"), 5);
quelle