處理文本對(duì)Java應(yīng)用來(lái)說(shuō)應(yīng)該算是家常便飯了,在1.4出現(xiàn)之前,Java自身提供的API非常有限,如String、StringTokenizer、StringBuffer,操作也比較單一。無(wú)非就是查找substring、分解、合并等等。到1.4的出現(xiàn)可以說(shuō)Java的文字處理上了一個(gè)臺(tái)階,因?yàn)樗С?/span>regular expression了。這可是個(gè)重量級(jí)而方便的東東啊,缺點(diǎn)是太復(fù)雜,學(xué)習(xí)起來(lái)有一定難度。相較而言,Jakarta Commons提供的StringUtils和WordUtils至今還維持著那種簡(jiǎn)潔而強(qiáng)大的美,使用起來(lái)也很順手。來(lái)看一個(gè)例子:
package sean.study.jakarta.commons.lang;
import org.apache.commons.lang.StringUtils;
public class StringUtilsAndWordUtilsUsage {
public static void main(String[] args) {
// data setup
String str1 = "";
String str2 = " ";
String str3 = "\t";
String str4 = null;
String str5 = "123";
String str6 = "ABCDEFG";
String str7 = "It feels good to use Jakarta Commons.\r\n";
// check for empty strings
System.out.println("==============================");
System.out.println("Is str1 blank? " + StringUtils.isBlank(str1));
System.out.println("Is str2 blank? " + StringUtils.isBlank(str2));
System.out.println("Is str3 blank? " + StringUtils.isBlank(str3));
System.out.println("Is str4 blank? " + StringUtils.isBlank(str4));
// check for numerics
System.out.println("==============================");
System.out.println("Is str5 numeric? " + StringUtils.isNumeric(str5));
System.out.println("Is str6 numeric? " + StringUtils.isNumeric(str6));
// reverse strings / whole words
System.out.println("==============================");
System.out.println("str6: " + str6);
System.out.println("str6 reversed: " + StringUtils.reverse(str6));
System.out.println("str7: " + str7);
String str8 = StringUtils.chomp(str7);
str8 = StringUtils.reverseDelimited(str8, ' ');
System.out.println("str7 reversed whole words : \r\n" + str8);
// build header (useful to print log messages that are easy to locate)
System.out.println("==============================");
System.out.println("print header:");
String padding = StringUtils.repeat("=", 50);
String msg = StringUtils.center(" Customised Header ", 50, "%");
Object[] raw = new Object[]{padding, msg, padding};
String header = StringUtils.join(raw, "\r\n");
System.out.println(header);
}
}
輸出的結(jié)果如下:
==============================
Is str1 blank? true
Is str2 blank? true
Is str3 blank? true
Is str4 blank? true
==============================
Is str5 numeric? true
Is str6 numeric? false
==============================
str6: ABCDEFG
str6 reversed: GFEDCBA
str7: It feels good to use Jakarta Commons.
str7 reversed whole words :
Commons. Jakarta use to good feels It
==============================
print header:
==================================================
%%%%%%%%%%%%%%% Customised Header %%%%%%%%%%%%%%%%
==================================================
從代碼中我們可以大致了解到這個(gè)StringUtils類簡(jiǎn)單而強(qiáng)大的處理能力,從檢查空串(對(duì)null的情況處理很得體),到分割子串,到生成格式化的字符串,使用都很簡(jiǎn)潔,也很直截了當(dāng)。