格式化文本 MessageFormat

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

  At 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage

  •以上字符串中包含了时间、数字、货币等多个与国际化相关的数据,对于这种字符串,可以使用MessageFormat类对其国际化相关的数据进行批量处理。
 
MessageFormat 类如何进行批量处理呢?
•1.MessageFormat类允许开发人员用占位符替换掉字符串中的敏感数据(即国际化相关的数据)。
•2.MessageFormat类在格式化输出包含占位符的文本时,messageFormat类可以接收一个参数数组,以替换文本中的每一个占位符。
 
模式字符串:
•On {0}, a hurricance destroyed {1} houses and caused {2} of damage.
占位符:
{0}{1}{2}
 
占位符有三种方式书写方式:
•{argumentIndex}: 0-9 之间的数字,表示要格式化对象数据在参数数组中的索引号
•{argumentIndex,FormatType}: 参数的格式化类型---{0,time或date样式}
  •{argumentIndex,FormatType,FormatStyle}: 格式化的样式,它的值必须是与格式化类型相匹配的合法模式、或表示合法模式的字符串----{0,time工date样式,5种显示样式}
 
•MessageFormat(String pattern) 
  •实例化MessageFormat对象,并装载相应的模式字符串。
•format(object obj[])
  •格式化输出模式字符串,参数数组中指定占位符相应的替换对象。
•format(new Object[ ]{date, new Integer(99), new Double(1E7) })
 1 import java.text.MessageFormat;
 2 import java.util.Date;
 3 import java.util.Locale;
 4 
 5 //演示MessageFormat的用法
 6 public class Demo4 {
 7     public static void main(String[] args) throws Exception {
 8         //模式字符串,即含有{0}占位符的字符中
 9         String pattern = "On {0}, a hurricance destroyed {1} houses and caused {2} of damage.";
10         //创建MessageFormat类
11         MessageFormat mf = new MessageFormat(pattern,Locale.US);
12         String message = mf.format(new Object[]{new Date(),99,"$1000000"});
13         System.out.println(message);
14     }
15 }

 

1 //演示占位符的其他使用方式
2 public class Demo5 {
3     public static void main(String[] args) {
4         String pattern = "At {0, time, short} on {0, date}, {1} destroyed'\n";
5         MessageFormat mf = new MessageFormat(pattern,Locale.US);
6         String message = mf.format(new Object[]{new Date(),99});
7         System.out.println(message);
8     }
9 }
10 //
{0, time, short}
{0, date}
time表示时间,date表示日期,short表示样式,一共有五种

 

 
posted @ 2013-04-14 13:42  hacket520  阅读(376)  评论(0编辑  收藏  举报