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

Pan*_*edi 1 java replace placeholder messageformat illegalargumentexception

我有一个像下面这样的字符串.

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

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

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

看来第一对括号正在为第一个占位符进行解析,因为它不是有效占位符,所以会发生错误.

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

Fer*_*cio 7

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

ABC '{A WELL-KNOWN MAGICIAN}' WILL PERFORM AT {0} FOR {1} HOURS.
Run Code Online (Sandbox Code Playgroud)