我今天遇到了一个使用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
语言,可以保证处理所有转义。有这样的事吗?
答案 0 :(得分:1)
没有任何方法,但用ASCII单引号字符封装整个文本将完成同样的事情。您可以按照自己的描述进行'
→''
替换,然后使用'
将文本环绕。来自MessageFormat documentation:
例如,模式字符串
"'{''}'"
被解释为'{
(引用开头和左大括号),''
(单引号)和{{1}的序列(右大括号和引用结束),不}'
和'{'
(引用左右大括号):表示字符串'}'
,而不是"{'}"
。