我们在写Pattern的时候,有时会碰到需要特殊处理的符号。例如大小括号{}里面又包含了{},由于正在表达式是会将{}括号中的内容进行数值解析的。因此我们需要将括号作为字符串输出(注意:不是转义,不是转义,不是转义)
public class Test {
public static void main(String[] args) {
String setTemplate = "{姓名:{0},性别:{1}}";
String format = MessageFormat.format(setTemplate, "张三", "男");
System.out.println(format);
}
}
报错: can't parse argument number
Exception in thread "main" java.lang.IllegalArgumentException: can't parse argument number: 姓名:{0}
at java.text.MessageFormat.makeFormat(MessageFormat.java:1429)
at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
at java.text.MessageFormat.<init>(MessageFormat.java:362)
at java.text.MessageFormat.format(MessageFormat.java:840)
at javacore.Test.main(Test.java:10)
转义是在字符前面加 单引号 ',而字符串输出是用 两个单引号包起来。
String setTemplate = "'{'姓名:{0},性别:{1}'}'";
输出
{姓名:张三,性别:男}
如果这里只用一个单引号转义的话,中间的占位符将不会被识别,输出的将会是:
{姓名:{0},性别:{1}}
因此当我们想转义特殊字符的时候,再字符前加1个单引号' ;如果想让特殊字符作为字符串输出就用2个单引号将其包围起来;