我可以在一个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"));