Подтвердить что ты не робот

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

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

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

Есть ли способ избежать скобок вокруг "return {2}"?

4b9b3361

Ответ 1

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

'{'return {2};'}'

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

Ответ 2

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Ответ 5

вы можете использовать это регулярное выражение с perl или любым другим языком, чтобы убрать фигурные скобки и одинарные кавычки (x27). Это не касается какого-либо заполнителя, например {0}:

echo "#  'single' quote test \n\n public {0} get{1}() {return {2};}\n\n" | perl -pe 's/\x27/\x27\x27/g; s/\{([^0-9])/\x27\{\x27$1/g; s/([^0-9])\}/$1\x27\}\x27/g'