栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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.(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个单引号将其包围起来;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号