MessageFormat日常使用

本文详细介绍了Java中的MessageFormat类,该类提供了一种语言无关的方法来组装消息,允许在运行时用指定参数替换消息字符串中的部分。文章通过示例代码展示了如何使用MessageFormat进行字符串格式化,并对比了String类的format()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来一波代码

public class MessageFormatTest {

    public static void main(String[] args) {

        //ArgumentIndex必须是非负整数,它的个数不只限于0到9这10个,它可以用0到9的数字组成,因此可以有好多个,
        String msg = "{0}{1}{2}{3}{4}{5}{6}{7}{8}";
        Object [] array = new Object[]{"A","B","C","D","E","F","G","H","I",};
        String value = MessageFormat.format(msg, array);
        System.out.println(value);

        //格式化字符串时,两个单引号才表示一个单引号,单个单引号会被省略(中文单引号不会被省略)
        String value1 = MessageFormat.format("oh, {0} is 'a' pig", "ZhangSan");
        System.out.println(value1);

        //单引号会使其后面的占位符均失效,导致直接输出占位符。
        System.out.println(MessageFormat.format("{0}{1}", 1, 2)); // 结果12
        System.out.println(MessageFormat.format("'{0}{1}", 1, 2)); // 结果{0}{1}
        System.out.println(MessageFormat.format("'{0}'-{1}", 1, 2)); // 结果{0}-2
        System.out.println(MessageFormat.format("oh, ''{0}'' is a pig", "ZhangSan"));

        //子格式模式
        System.out.println(MessageFormat.format("oh, {0,number,#.#} is good num", Double.valueOf("3.1415")));

        //若要多次格式同一个模式的字符串,建议创建一个MessageFormat实例执行格式化操作
        String message = "oh, {0} is a pig";
        MessageFormat messageFormat = new MessageFormat(message);
        Object[] array2 = new Object[]{"ZhangSan"};
        String value2 = messageFormat.format(array);
        System.out.println(value2);

    }

来一波介绍:
MessageFormat提供一种语言无关的方式来组装消息,它允许你在运行时刻用指定的参数来替换掉消息字符串中的一部分。
使用时注意两个点:
1、最多可以设置10个占位符。
2、每个占位符可以重复出现多次,而且格式可以不同,比如{1,date}和{1,time},{1,number,#.##}。
在这里插入图片描述

补充一点
MessageFormat 提供了以与语言无关方式生成连接消息的方式。使用此方法构造向终端用户显示的消息。
MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。
总结:拼接与格式化字符串用String.format,涉及到对象格式化(如日期)使用MessageFormat

代码参考:https://blog.csdn.net/qq_36538061/article/details/78506758

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值