【java消息格式化】使用MessageFormat进行消息格式化
消息格式化的基本使用格式化:匹配数字;格式化:匹配日期;格式化:匹配时间;格式化:多次匹配;MessageFormat用来格式化一个消息,通常是一个字符串。MessageFormat模式的主要部分下面是详细配置:示例程序:基本匹配:String message = "基本匹配:{0}{1}{2}{3}{4}";Object[] array = new Object[] { "A", "B", "C
·
消息格式化的基本使用
- 格式化:匹配数字;
- 格式化:匹配日期;
- 格式化:匹配时间;
- 格式化:多次匹配;
MessageFormat用来格式化一个消息,通常是一个字符串。MessageFormat模式的主要部分
下面是详细配置:
示例程序:
基本匹配:
String message = "基本匹配:{0}{1}{2}{3}{4}";
Object[] array = new Object[] { "A", "B", "C", "D", "E" };
String value = MessageFormat.format(message, array);
System.out.println(value);
结果如下:
基本匹配:ABCDE
基本匹配:
String message = "基本匹配:{0} is a dog";
Object[] array = new Object[] { "huanhuan" };
String value = MessageFormat.format(message, array);
System.out.println(value);
结果如下:
基本匹配:huanhuan is a dog
数字匹配:
System.out.println("数字匹配,匹配:3.1415");
List<String> numList = Arrays.asList("integer", "currency", "percent", "#.##", "00.##");
for (String string : numList) {
String message = "{0,number," + string + "}";
Object[] array = new Object[] { new Double(3.1415) };
String value = MessageFormat.format(message, array);
System.out.println(value);
}
结果如下:
数字匹配,匹配:3.1415
3
¥3.14
314%
3.14
03.14
日期匹配:
System.out.println("日期匹配");
List<String> dateList = Arrays.asList("yyyy-MM-dd HH:mm:ss", "short", "medium", "long", "full");
for (String string : dateList) {
String message = "{0,date," + string + "}";
String value = MessageFormat.format(message, new Date());
System.out.println(value);
}
结果如下
日期匹配
2020-09-20 22:58:55
20-9-20
2020-9-20
2020年9月20日
2020年9月20日 星期日
多次匹配:
String message = "多次匹配:{0} | {1} | {0} | {1}";
Object[] array = new Object[] { "A", "B" };
String value = MessageFormat.format(message, array);
System.out.println(value);
结果如下
多次匹配:A | B | A | B
常遇的坑:
上面说的是一些基本使用,下面说一下在基本使用中可能会遇到的一些问题:
比如:我想执行如下语句
String message = "{0} is a 'good' boy";
String param = "Kevin";
String result = MessageFormat.format(message, param);
System.out.println(result);
结果如下:
Kevin is a good boy
我们发现原本的单引号没了,这是因为MessageFormat把他当成特殊字符去掉了
我们可以改成这样
String message = "{0} is a ''good'' boy";
String param = "Kevin";
String result = MessageFormat.format(message, param);
System.out.println(result);
结果如下:
Kevin is a 'good' boy
这回是我们想要的了,注意:good两边的不是双引号,而是两个单引号,这样的作用是前一个单引号会把后一个单引号转义,然后后一个单引号就会保留下来。
更多推荐

所有评论(0)