Java MessageFormat的Pattern.quote()等效于什么?
今天,我在使用Spring时遇到了以下代码的问题:Java MessageFormat的Pattern.quote()等效于什么?,java,messageformat,Java,Messageformat,今天,我在使用Spring时遇到了以下代码的问题: String tabTitle = messageSource.getMessage(tabName, new Object[] {}, tabName, locale) 这用于获取站点顶部一系列选项卡的显示标题(的一个实例)。问题是,如果tabName包含一个引号,它会自动从结果中删除。例如,午餐吃什么变成了午餐吃什么 我已经找到了原因,这是因为该方法中的第三个参数应该是中指定的格式。需要2个单引号 因为我们没有使用该格式传递任何参数,所以
String tabTitle = messageSource.getMessage(tabName, new Object[] {}, tabName, locale)
这用于获取站点顶部一系列选项卡的显示标题(的一个实例)。问题是,如果tabName
包含一个引号,它会自动从结果中删除。例如,午餐吃什么
变成了午餐吃什么
我已经找到了原因,这是因为该方法中的第三个参数应该是中指定的格式。需要2个单引号
因为我们没有使用该格式传递任何参数,所以我可以在将其作为第三个参数传递之前,安全地转义
选项卡名称中的任何特殊字符。我可以手动将这里的单引号替换为2个单引号,但我真正想要的是类似于Pattern.quote()
,仅适用于MessageFormat
语言,这将保证处理所有转义。有类似的东西存在吗?没有任何方法,但是用ASCII单引号字符封装整个文本将完成同样的任务。您可以执行”
→ <代码>'
替换,如您所述,然后用'
环绕文本。从:
例如,模式字符串“{'}'”
被解释为{/code>(引用开始和左大括号)、'
(单引号)和}
(右大括号和引用结束)的序列,而不是{'
和'}
(引用的左大括号和右大括号):表示字符串“{}”“
,而不是”{}”
没有,但您可以安全地执行”
→ <代码>''
替换,然后用单引号将整个内容括起来。即使在单引号文本中,双引号也能正确解释。谢谢,如果你把这个作为答案,我会接受的。