先来一波代码
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