MessageFormat 的 Pattern.quote() 等价物是什么?

What is the equivalent of Pattern.quote() for MessageFormat?

我 运行 今天遇到一个问题,使用 Spring:

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

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

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

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

没有任何方法,但是用 ASCII 单引号字符将整个文本括起来将完成同样的事情。您可以按照您的描述进行 ''' 替换,然后用 ' 包围文本。来自 MessageFormat documentation:

For example, pattern string "'{''}'" is interpreted as a sequence of '{ (start of quoting and a left curly brace), '' (a single quote), and }' (a right curly brace and end of quoting), not '{' and '}' (quoted left and right curly braces): representing string "{'}", not "{}".