消息格式化的基本使用

  • 格式化:匹配数字;
  • 格式化:匹配日期;
  • 格式化:匹配时间;
  • 格式化:多次匹配;

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
33.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
20209202020920日 星期日

多次匹配:

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两边的不是双引号,而是两个单引号,这样的作用是前一个单引号会把后一个单引号转义,然后后一个单引号就会保留下来。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐