我可以在java MessageFormat中转义大括号吗?

Ste*_*man 61 java escaping messageformat

我想在java MessageFormat中输出一些大括号.例如,我知道以下不起作用:

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

有没有办法逃避围绕"返回{2}"的大括号?

Bri*_*new 91

你可以将它们放在单引号内,例如

'{'return {2};'}'
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见此处

  • +1我以为是\,但是'是正确的 (2认同)

Bom*_*mbe 16

哇.惊喜!MessageFormat的文档知道答案:

String中,"''"表示单引号.甲QuotedString可以包含除单引号的任意字符; 周围的单引号被删除.一个UnquotedString 可以包含除单引号和左大括号的任意字符.因此,应该导致格式化消息的字符串 "'{0}'"可以写为"'''{'0}''""'''{0}'''".


Jon*_*eet 12

使用单引号:

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

如果你想实际使用单引号,只需加倍.在对JavaDoc中MessageFormat给出了这个有些复杂的例子:

因此,应该将格式化消息的字符串"'{0}'"写为"'''{'0}''" or "'''{0}'''".

这是''一个单引号,然后'{'进行转义括号,然后0,'}'在右括号,并''在右引号.