我想在 java MessageFormat 中输出一些大括号。例如,我知道以下不起作用:
MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);
有没有办法逃避“return {2}”周围的大括号?
我想在 java MessageFormat 中输出一些大括号。例如,我知道以下不起作用:
MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);
有没有办法逃避“return {2}”周围的大括号?
哇。惊喜!MessageFormat的文档知道答案:
在String中,
"''"
表示单引号。QuotedString可以包含除单引号外的任意字符;周围的单引号被删除。UnquotedString可以包含除单引号和 左大括号外的任意字符。因此,应该产生格式化消息的字符串"'{0}'"
可以写为"'''{'0}''"
或"'''{0}'''"
。
使用单引号:
MessageFormat.format(" public {0} get{1}() '{'return {2};'}'\n\n",
type, upperCamel, lowerCamel);
如果您想实际使用单引号,只需将其加倍即可。JavaDoc forMessageFormat
给出了这个有点复杂的例子:
因此,应该导致格式化消息的字符串
"'{0}'"
可以写为"'''{'0}''" or "'''{0}'''"
.
这是''
单引号,然后'{'
是转义大括号,然后0
是'}'
右大括号和''
右引号。
System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));
您可以将此正则表达式与 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'