2.11 使用MessageFormat格式化字符串
![]()
使用一个对象的toString方法可以将对象的内部状态转换成一个字符串表示。当创建一个类的toString方法时,通常需要将一些类变量转变成字符串值并执行一些数据转换。此外,在其他很多时候编程人员需要格式化文本。这种情况下,Java开发人员可以编写他们自己的方法或使用java.text.Format子类(它们自从JDK1.1起就已出现):
ChoiceFormat
将一个格式附加在一个数字范围上,常用来表示字符串。
DateFormat
用于格式化和分析日期和时间值。
DecimalFormat
用于格式十进制数。
MessageFormat
提供一种语言无关的方式来组装消息,它允许你在运行时刻用指定的参数,如format 字符串中的值来添加内容。MessageFormat类将根据格式化字符串在内部使用其他Format类来产生结果,因此通常没有必要直接使用另一种Format类。格式化字符串使用花括号{和}作为特殊的字符从参数列表中选择项目并向它们应用格式。可以如下例所示的那样调用静态format方法:
import java.text.MessageFormat;
Object[] dataArray = new Object[] {
"Petunia",
new java.util.Date(),
new Double(13.685)
};
String result = MessageFormat.format(
"{0} weighed {2,number,##.#} kg on {1,date}",
dataArray);
System.out.println(result);
此代码产生如下的输出:
Petunia weighed 13.7 kg on Dec 5, 2004
上面的格式化String表明将检索数组的第一个元素、第三个元素(在应用数字格式之后)和第二个元素(在应用了默认的日期格式后)。这些值和剩下的格式化字符串连接在一起。可参考MessageFormat类的相关文档来了解语法和转换选项的完整描述。另外,还可以使用MessageFormat类将文本解析成变量(JavaDoc中有相关说明)。
在下一节提到的格式化类中使用一种完全不同的格式化字符串,它使用的语法与MessageFormat类所用的语法不同(并且更难理解)。







