【问题标题】:What is the equivalent of Pattern.quote() for MessageFormat?MessageFormat 的 Pattern.quote() 等价物是什么?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2018-07-10
    • 2023-04-10
    相关资源
    最近更新 更多