首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 字符串格式化处置

2012-12-27 
Java 字符串格式化处理今天读Apache 线程池源码时,读到了org.apache.catalina.util.StringManager其实这个

Java 字符串格式化处理

今天读Apache 线程池源码时,读到了org.apache.catalina.util.StringManager

其实这个类就是负责字符串的格式化(国际化),主要用途在一场信息输出时。感觉这个处理异常信息的思路真的很好,不用再在程序的Catch中通过字符串拼接记录异常信息了。而起不好国际化和规格化,而通过用ResourceBundle和MesageFormat类的组合使用,并能很好的处理国际化和规格化,org.apache.catalina.util.StringManager就是一个这样的类。

前几篇文章介绍了ResourceBundle类的使用,在此在回忆一下MessageFormat类的使用。

我想大家都用过String类提供的format的方法吧,相对于string的format方法。MessageFormat类的format方法更强大,强大的功能可以比拼C语言中的printf中的格式输出功能。

?

下面是摘抄JDK1.6中的部分语法说明

MessageFormat 使用以下形式的模式:

 MessageFormatPattern:         String         MessageFormatPattern FormatElement String FormatElement:         { ArgumentIndex }         { ArgumentIndex , FormatType }         { ArgumentIndex , FormatType , FormatStyle } FormatType: one of          number date time choice FormatStyle:         short         medium         long         full         integer         currency         percent         SubformatPattern String:         StringPartopt         String StringPart StringPart:         ''         ' QuotedString '         UnquotedString SubformatPattern:         SubformatPatternPartopt         SubformatPattern SubformatPatternPart SubFormatPatternPart:         ' QuotedPattern '         UnquotedPattern


下面给出的几个例子

Caught exception ({0}) executing {1}, terminating thread

?

"Once upon a time ({1,date}, around about {1,time,short}), there " +
"was a humble developer named Geppetto who slaved for " +
"{0,number,integer} days with {2,number,percent} complete user " +
"requirements. ";

下面是java处理的代码

String message ="Once upon a time ({1,date}, around about {1,time,short}), there " +"was a humble developer named Geppetto who slaved for " +"{0,number,integer} days with {2,number,percent} complete user " +"requirements. ";Object[ ] variables = new Object[ ] { new Integer(4), new Date( ), new Double(0.21) }String output = MessageFormat.format( message, variables );System.out.println(output); 隐藏在信息中的是描述输出的格式的一种短小的代码,范例的输出如下:Once upon a time (Nov 3, 2002, around about 1:35 AM), there was a humble developer named Geppetto who slaved for 4 days with 21% complete user requirements. 

?

?

这里需要注意的是模式里的索引是从0开始。

?

另外给出个性能的说明

如果只格式一种类型的话 Sting.format 要比String.replace 慢很多。

热点排行