| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
29 | 30 | 1 | 2 | 3 | 4 | 5 | |||
6 | 7 | 8 | 9 | 10 | 11 | 12 | |||
13 | 14 | 15 | 16 | 17 | 18 | 19 | |||
20 | 21 | 22 | 23 | 24 | 25 | 26 | |||
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
處理文本對
Java
應(yīng)用來說應(yīng)該算是家常便飯了,在
1.4
出現(xiàn)之前,
Java
自身提供的
API
非常有限,如
String
、
StringTokenizer
、
StringBuffer
,操作也比較單一。無非就是查找
substring
、分解、合并等等。到
1.4
的出現(xiàn)可以說
Java
的文字處理上了一個(gè)臺階,因?yàn)樗С?/span>
regular expression
了。這可是個(gè)重量級而方便的東東啊,缺點(diǎn)是太復(fù)雜,學(xué)習(xí)起來有一定難度。相較而言,
Jakarta Commons
提供的
StringUtils
和
WordUtils
至今還維持著那種簡潔而強(qiáng)大的美,使用起來也很順手。來看一個(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
???????
??????? // 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.
==============================
print header:
==================================================
%%%%%%%%%%%%%%% Customised Header %%%%%%%%%%%%%%%%
==================================================
從代碼中我們可以大致了解到這個(gè)
StringUtils
類簡單而強(qiáng)大的處理能力,從檢查空串(對
null
的情況處理很得體),到分割子串,到生成格式化的字符串,使用都很簡潔,也很直截了當(dāng)。