MessageFormat.format 花括号嵌套,报错:java.lang.IllegalArgumentException: can‘t parse argument number

我们在写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个单引号将其包围起来;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值