我能逃脱在Java MessageFormat中括号?(Can I escape braces in

2019-06-26 21:39发布

我想输出在Java MessageFormat中的一些支撑。 例如,我知道下面不工作:

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

是否有逃逸周边“回报{2}”大括号的方式吗?

Answer 1:

你可以把它们放在单引号内如

'{'return {2};'}'

请参阅这里了解更多详情。



Answer 2:

哇。 惊喜! 对于文档的MessageFormat知道答案:

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



Answer 3:

使用单引号:

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

如果您确实希望使用单引号,只需双击它。 该用于JavaDoc的MessageFormat给出了这个有些复杂例子:

因此,应导致格式化的消息中一个字符串"'{0}'"可以被写为"'''{'0}''" or "'''{0}'''"

这是''为一单引号,然后'{'为一个转义撑,然后0'}'为右括号和''为闭引号。



Answer 4:

System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));


Answer 5:

你可以使用这个表达式用珍珠或任何其他语言逃脱大括号和单引号(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' 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'



文章来源: Can I escape braces in a java MessageFormat?