MessageFormat的Pattern.quote()相当于什么?

时间:2016-09-23 18:57:15

标签: java messageformat

我今天遇到了一个使用Spring的代码:

String tabTitle = messageSource.getMessage(tabName, new Object[] {}, tabName, locale)

这用于获取我们网站顶部的一系列标签的显示标题(uPortal的实例)。问题是如果tabName包含单引号,它会自动从结果中删除。例如,What's For Lunch变为Whats For Lunch

我已经跟踪了原因,这是因为该方法中的第3个参数应该是java.text.MessageFormat中指定的格式。需要2个单引号。

因为我们没有传递任何带格式的参数,所以我可以安全地转义tabName中的任何特殊字符,然后将其作为第3个参数传入。我可以用2个单引号手动替换单引号,但我真正喜欢的是Pattern.quote(),仅适用于MessageFormat语言,可以保证处理所有转义。有这样的事吗?

1 个答案:

答案 0 :(得分:1)

没有任何方法,但用ASCII单引号字符封装整个文本将完成同样的事情。您可以按照自己的描述进行'''替换,然后使用'将文本环绕。来自MessageFormat documentation

  

例如,模式字符串"'{''}'"被解释为'{(引用开头和左大括号),''(单引号)和{{1}的序列(右大括号和引用结束), }''{'(引用左右大括号):表示字符串'}',而不是"{'}"