其中 Commons Lang這一元件中,針對了字串、數值,還有物件建立與序列化等等,提供了更多的方法,以補足標準java.lang API的不足之處。
好像不管使用什麼語言,在程式要處理字串的地方,是常常看到的,在 Java的
String
類別本身就提供了很多來處理字串的方法,但在使用這些方法時,也常都要先判斷String
物件是否為null
再做呼叫,有時會程式失去的易讀性,如要判斷一個String
物件是否為空白字串(""),一般會這樣寫:
if(input != null && input.equals("")) //OR if("".equals(input))但若使用
StringUtils
類別的話,可以呼叫isEmpty
這個方法來判斷:
if(StringUtils.isEmpty(input)) //StringUtils.isEmpty(null) 回傳true //StringUtils.isEmpty("") 回傳true //StringUtils.isEmpty(" ") 回傳false這樣不只省了一些程式碼,而且也大大地提升了程式的易讀性。
StringUtils
類別中實作了很多方便用來處理字串的方法,這裡再介紹一個拜歐覺得用過來切分字串是非常方便的方法:splitByWholeSeparatorPreserveAllTokens
,詳細的文件,可以參考這裡。
如
1,2,,4,5,
,若用,
去切,在有些情況下,會希望結果是1、2、空白、4、5和空白,先用String
的內建的split
方法去切:
String input = "1,2,,4,5,"; String[] peices = input.split(","); System.out.println("字串陣列的長度為: " + peices.length); System.out.print("字串陣列內的元素為: "); System.out.print(Arrays.asList(peices));結果為
字串陣列的長度為: 5 字串陣列內的元素為: [1, 2, , 4, 5]從上面來看,最後一個空白不見了,這不符合原先預期的結果。這時若使用
splitByWholeSeparatorPreserveAllTokens
這個方法去切:
String input = "1,2,,4,5,"; String[] peices = StringUtils.splitByWholeSeparatorPreserveAllTokens(input, ","); System.out.println("字串陣列的長度為: " + peices.length); System.out.print("字串陣列內的元素為: "); System.out.print(Arrays.asList(peices));結果就會如希望地呈現:
字串陣列的長度為: 6 字串陣列內的元素為: [1, 2, , 4, 5, ]若對其實作有興趣,建議可以下載它的原始檔來瞧瞧。
在使用Commons Lang元件時,有一個小地方要注意的是,它到版本 3.0以後,在套件名稱上有點差異,在3.0以前,套件名稱為
org.apache.commons.lang
,而之後的套件名稱為org.apache.commons.lang3
,這有時是為什麼明明有把函式庫引入,但卻編譯錯誤的原因!
沒有留言:
張貼留言