如何转义MessageFormat模式字符串中的{字符?

时间:2014-05-04 10:28:32

标签: java replace placeholder illegalargumentexception messageformat

我有一个如下字符串。

ABC {一位知名的魔术师}将在{0}的{1}小时内进行表演。

第一对花括号没有占位符。当我将此字符串传递给MessageFormat.format(String,Object [])方法时,如果对象数组包含两个字符串以替换占位符{0}和{1},则会出现以下错误。

java.lang.IllegalArgumentException:所有参数标识符必须是非负数或模式后面的字符串([:ID_Start:] [:ID_Continue:] *)。

第一个占位符似乎正在解析第一对大括号,因为它不是有效的占位符,所以会发生错误。

如何告诉MessageFormat.format忽略第一对花括号并与其他两个花括号一起工作?

1 个答案:

答案 0 :(得分:7)

在您不希望被视为参数占位符的部分周围放置一对单引号。即。

ABC '{A WELL-KNOWN MAGICIAN}' WILL PERFORM AT {0} FOR {1} HOURS.