格式化文本 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表示样式,一共有五种
by hacket