Отформатируйте сообщение с помощью MessageFormat.формат() в Java
Я сохранил некоторые сообщения в пакете ресурсов. Я пытаюсь отформатировать эти сообщения следующим образом.
import java.text.MessageFormat;
String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);
предположим, что первый параметр i.e фактическое сообщение хранится в файле свойств, который каким-то образом извлекается.
второй параметр i.e 5 является динамическим значением и должно быть помещено в заполнитель {0}
чего не происходит. Следующая строка печатает,
вы собираетесь удалить {0} строк.
в заполнитель не заменяется фактическим параметром.
это Апостроф здесь - You're
. Я пытался избежать его, как обычно, как You're
но это не сработало. Какие изменения необходимы для его работы?
5 ответов
добавить дополнительный Апостроф '
до MessageFormat
шаблон String
для обеспечения '
отображается символ
String text =
java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
^
Апостроф (он же одиночная кавычка) в шаблоне MessageFormat запускается строка с кавычками и не интерпретируется сама по себе. От javadoc
сама одинарная кавычка должна быть представлена двойными одинарными кавычками " по всей строке.
на String
You\'re
is эквивалентно добавлению символа обратной косой черты в String
Так что единственная разница будет в том, что You\re
будет производиться, а не Youre
. (перед решением двойной кавычки ''
прикладная)
просто убедитесь, что вы использовали двойной Апостроф (")
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
System.out.println(text);
Edit:
в строке можно использовать пару одинарных кавычек для цитирования любых произвольных символов, кроме одинарных кавычек. Например, строка шаблона "'{0} ' "представляет строку" {0}", а не FormatElement. ...
любая непревзойденная цитата рассматривается как закрытая в конце данного шаблона. Например, строка шаблона"'{0}" рассматривается как узор"'{0}'".
источник http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html
вам нужно использовать двойной Апостроф вместо одного в "ВЫ"re, например:
String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
System.out.println(text);
для всех, у кого есть проблемы с Android в строке.xml, используйте \ ' \ ' вместо одинарной кавычки.