MessageFormat是在JAVA中常常用来定制消息的一个基础类,用户能够定义消息的模板,利用运行时的变量来填补模板中的占位符(Place Holder),以达到灵活的输出。可是若是新手不太注意很容易会碰到如上的错误信息,请看下面这段代码:java
import java.text.MessageFormat; public class TestMessageFormat { public static void main(String[] args) { System.out.println(MessageFormat.format("The username cannot contain any of these characters: (){}",null)); } }
这段小程序仅仅用来输出提醒用户用户名不能包含(){}这四个符号,可是就会出现如上的错误。究其缘由就在于那对中括号,在MessageFormat中它是用来表示占位符的,如{0},{1}。它会去解析括号中间的序号,在上述状况中括号间没有数字,所以致使了不能解析的错误。
小程序
解决方法很简单,就是相似字符串中的转义字符,不一样的是这里用的是单引号('),代码修改以下:ide
import java.text.MessageFormat; public class TestMessageFormat { public static void main(String[] args) { System.out.println(MessageFormat.format("The username cannot contain any of these characters: ()'{'}", null)); } }
因为单引号也是特殊符号,这里若是想要在输出的信息中显示单引号则须要打两个单引号~
orm