如果一个字符串文本中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理。

  例如:

  在201619的时候,一场台风导致了500间房屋的摧毁和1000000元人民币的损失。

  在上面这句话中,包含了时间、数字和货币等多个与国家化相关的数据,已经用下划线标出,而我们可以使用MessageFormat对这句话中多个数据进行批量处理。

  要想使用MessageFormat进行批量处理,就要使用到占位符,用占位符替换上面的数据(不需要写死的数据或者与国际化相关的数据)。占位符由花括号{}和在花括号中的数字组成,数字代表这是第几个占位符,现在我们对上面的那个示例使用占位符:

  在{0}的时候,一场台风导致了{1}间房屋的摧毁和{2}元人民币的损失。

   经过占位符修改的字符串文本也称为模式字符串,如上面这句话,有了模式字符串后,我们需要一个对象数组来指定每个占位符对应的数据,在数组中的位置就对应着其相同位置的占位符。现在拥有了模式字符串和对象数组后,我们就可以使用MessageFormat对象的format方法,将数组中的数据一一对应到占位符上了。

  占位符由三种书写格式:

  ① {index}:index为0~9之间的数字,对应对象数组中的位置。

  ② {index,formatType}:index为0~9之间的数字,formatType为参数的格式化类型

  ③  {index,formatType,formatStyle}:formatStyle为参数的格式化样式。

有关占位符的使用稍后说明。

         注:在创建MessageFormat对象时可以直接将模式字符串以参数传入构造器,也可以直接使用MessageFormat的静态方法format(String pattern , Object …params)只执行一次。

 

例1:

1     String pattern = "在{0}的时候,一场台风导致了{1}间房屋的摧毁和{2}元人民币的损失。";
2     Object[] params = {new Date(),500,1000000};
3     MessageFormat mf = new MessageFormat(pattern);
4     String content = mf.format(params);
5     System.out.println(content);
View Code

相关文章: