java.lang.IllegalArgumentException : can't parse argument number MessageFormat

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

相关文章
相关标签/搜索