Могу ли я избежать фигурных скобок в Java MessageFormat?


Я хочу вывести некоторые фигурные скобки в Java MessageFormat. Например я знаю, что следующее не работает:

MessageFormat.format("  public {0} get{1}() {return {2};}nn", type, upperCamel, lowerCamel);

есть ли способ избежать скобок, окружающих " return {2}"?

4 54

4 ответа:

вы можете поместить их в одиночные кавычки, например,

'{'return {2};'}'

посмотреть здесь для более подробной информации.

Вау. Сюрприз! Документация для MessageFormat знает ответ:

внутри строка,"''" представляет собой одинарная кавычка. А QuotedString может содержат произвольные символы, кроме одинарные кавычки; окружающий сингл кавычки удаляются. Ан UnquotedString может содержать произвольные символы кроме одинарных кавычек и левой фигурной скобки. Таким образом, строка должна в результате форматированное сообщение "'{0}'" можно записать как "'''{'0}''" или "'''{0}'''".

используйте одинарные кавычки:

MessageFormat.format("  public {0} get{1}() '{'return {2};'}'\n\n",
                     type, upperCamel, lowerCamel);

если вы хотите на самом деле использовать одна цитата, просто удвоить его. Элемент JavaDoc для MessageFormat дает этот несколько более сложный пример:

таким образом, строка, которая должна привести к отформатированное сообщение "'{0}'" может быть написано как "'''{'0}''" or "'''{0}'''".

это '' для одной кавычки, то '{' для сбежавшей скобки, тогда 0,'}' для закрывающей скобки и '' для закрытия цитаты.

System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));