我想在java MessageFormat中输出一些大括号。例如,我知道以下内容不起作用:
MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);
有没有办法逃避“return {2}”周围的大括号?
答案 0 :(得分:86)
答案 1 :(得分:16)
哇。惊喜! MessageFormat的文档知道答案:
在 String 中,
"''"
代表一个 单引号。 QuotedString 可以 包含任意字符除外 单引号;周围的单身 引号被删除。 UnquotedString 可以包含任意字符 除了单引号和左卷曲 括号。因此,应该是一个字符串 导致格式化的消息"'{0}'"
可以写成"'''{'0}''"
或"'''{0}'''"
。
答案 2 :(得分:12)
使用单引号:
MessageFormat.format(" public {0} get{1}() '{'return {2};'}'\n\n",
type, upperCamel, lowerCamel);
如果您想实际使用单引号,只需加倍即可。 JavaDoc for MessageFormat
给出了一个有点复杂的例子:
因此,应该导致的字符串 格式化的消息
"'{0}'"
可以是 写作"'''{'0}''" or "'''{0}'''"
。
单引号''
,转义大括号为'{'
,结束大括号为0
,'}'
,大括号为''
收尾报价。
答案 3 :(得分:1)
System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));
答案 4 :(得分:0)
您可以将此正则表达式与Pearl或任何其他语言一起使用,以转义大括号和单引号(x27)。它不会碰到任何占位符,例如{0}
:
bash
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'