究其原因是表示占位符的那对花括号,在MessageFormat中用{}来表示占位符,例如:{0},{1},其中的0和1就是对应的替换参数的序号,在花括号中没有数字的情况下就会导致不能解析的错误;
解决方案:将这里面存在的特殊符号进行转义一下就可以规避这个报错,但是这里面用的是单引号 ’ 来转义。如下:’{}
举例:
String str = " '{} won the winner ";
String param = "Kevin";
String result = MessageFormat.format(str, param);
System.out.println(result);
结果如下:
{} won the winner
这里不再报错了,但是我们会发现参数没有被替换。具体原因请看下面这篇MessageFormat的详细使用吧。
MessageFormat消息格式化 https://blog.csdn.net/IT_Wallace/article/details/108699942