【发布时间】:2016-09-23 18:57:14
【问题描述】:
我今天在使用 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 语言,可以保证处理所有转义。有这样的东西吗?
【问题讨论】:
-
没有,但您可以安全地执行
'→''替换,然后将整个内容用单引号括起来。即使在单引号文本中,双引号也能正确解释。 -
谢谢,如果您将此添加为答案,我会接受。
标签: java messageformat