我可以在一个Java MessageFormat逃避大括号?
我想在一个Java MessageFormat输出一些大括号。 例如,我知道以下不起作用:
MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);
有没有办法绕过“return {2}”的大括号?
你可以把它们放在单引号内,例如
'{'return {2};'}'
在这里看到更多的细节。
哇。 惊喜! MessageFormat的文档知道答案:
在一个string中 ,
"''"
代表单引号。 QuotedString可以包含除单引号之外的任意字符; 周围的单引号被删除。 UnquotedString可以包含除单引号和左大括号之外的任意字符。 因此,应该导致格式化消息"'{0}'"
的string可以写为"'''{'0}''"
或"'''{0}'''"
。
使用单引号:
MessageFormat.format(" public {0} get{1}() '{'return {2};'}'\n\n", type, upperCamel, lowerCamel);
如果你想实际使用单引号,只需加倍。 MessageFormat
的JavaDoc给出了这个有点复杂的例子:
因此,应该导致格式化消息
"'{0}'"
的string可以写为"'''{'0}''" or "'''{0}'''"
。
这是一个单引号,然后'{'
为大括号,然后是0
, '}'
为大括号, ''
为结尾引用。
System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));