apache commons StringUtils介紹
apache commons StringUtils介紹
org.apache.commons.lang.StringUtils
StringUtils是apache commons lang庫(http://commons.apache.org/lang)旗下的一個工具類,提供了很多有用的處理字符串的方法,本文不打算把所有的方法都介紹一遍,我會介紹一些精選的常用的給大家。
目前StringUtils有兩個版本可用,分別是較新的org.apache.commons.lang3.StringUtils和較老的org.apache.commons.lang.StringUtils,他們有比較大的區別,前者需要JAVA
5,我想這個應該是我們希望使用的。
1)public static boolean
equals(CharSequence str1,CharSequence str2)
我們就先從最簡單的方法equals開始,和你想的一樣,他需要兩個字符串參數,當相同的時候返回true,否則返回false。
但是java.lang.String已經有現成的比較完美的equals方法了,為何我們還需要一個第三方的實現呢?
這個問題很好,讓我們來看看下面這些代碼,看看有何問題?
</div>
- public void doStuffWithString(String stringParam) {
- if(stringParam.equals("MyStringValue")) {
- // do stuff }
- } </ol> </div>
- public void safeDoStuffWithString1(String stringParam) {
- if(stringParam != null &&
- stringParam.equals("MyStringValue")) {
- // do stuff
- }
- }
- public void safeDoStuffWithString2(String stringParm) {
- if("MyStringValue".equals(stringParam))
- {
- // do stuff
- }
- } </ol> </div>
- public void safeDoStuffWithString3(String stringParam) {
- if(StringUtils.equals(stringParam,"MyStringValue))
- {
- // do stuff
- }
- } </ol> </div>
- if(myString != null && !myString.isEmpty()) {
- // 有點臃腫是把?
- // Do stuff with myString
- }
- if(StringUtils.isNotEmpty(myString)) { // 好多了吧
- // Do stuff with myString
- } </ol> </div>
- String someWhiteSpace = " \t \n";
- StringUtils.isEmpty(someWhiteSpace); // false
- StringUtils.isBlank(someWhiteSpace); // true </ol> </div>
- public void possiblyNotWhatYouWant() {
- String contrivedExampleString = "one.two.three.four";
- String[] result = contrivedExampleString.split(".");
- System.out.println(result.length); // 0
- } </ol> </div>
- String[] numbers = {"one", "two", "three"};
- StringUtils.join(numbers,","); // returns "one,two,three" </ol> </div>
public void doStuffWithString(String stringParam) { if(stringParam.equals("MyStringValue")) { // do stuff } }
這個可能有NullPointerException出現,那么有幾個辦法處理:
</div>
public void safeDoStuffWithString1(String stringParam) { if(stringParam != null && stringParam.equals("MyStringValue")) { // do stuff } } public void safeDoStuffWithString2(String stringParm) { if("MyStringValue".equals(stringParam)) { // do stuff } }
我本人不喜歡上面的兩個方法,第一個看起來太臃腫,第二個看起來像錯誤的。這里我們就可以用一些StringUtils類了,這個類提供的equals方法是空指針安全的,不用擔心傳遞給他的是什么參數,他不會拋出空指針異常,這樣寫:
</div>
public void safeDoStuffWithString3(String stringParam) { if(StringUtils.equals(stringParam,"MyStringValue)) { // do stuff } }
這個是我個人的喜好,但是這個確實看起來比較簡單易讀。前面的兩個方法雖然么有什么問題,但是我想StringUtils.equals還是值得考慮的。
2)isEmpty,isNotEmpty,isBlank,isNotBlank
和前面一樣,這些方法相對于jdk提供的isEmpty方法來說,多了一個“空指針安全”,即不用考慮傳遞參數的空值問題,讓我們來看一個例子:
</div>
if(myString != null && !myString.isEmpty()) { // 有點臃腫是把? // Do stuff with myString }if(StringUtils.isNotEmpty(myString)) { // 好多了吧 // Do stuff with myString } </pre>
Blank和empty的區別
isBlank將在字符串含有空白字符的時候,返回true,例如:
</div>
String someWhiteSpace = " \t \n"; StringUtils.isEmpty(someWhiteSpace); // false StringUtils.isBlank(someWhiteSpace); // true
3)public static String[] split(String str,String separatorChars)
當然,這個方法相對于String.split也是空指針安全的,當你嘗試split一個null字符串的時候,將返回Null,一個Null的分隔符將按照空白字符分隔字符串,但是,還有一個理由讓你可考慮使用StringUtils.split()方法,就是jdk自帶的String.split由于支持正則表達式進行分隔,所以可能帶來意想不到的后果,例如:
</div>
public void possiblyNotWhatYouWant() { String contrivedExampleString = "one.two.three.four"; String[] result = contrivedExampleString.split("."); System.out.println(result.length); // 0 }
上面很明顯你希望按照.分隔,但是jdk理解的“.”是正則表達式的任意字符,導致字符串內任意字符都匹配,返回一個size=0的字符串數組。其實你只要傳遞"\."就行了,但是這個確實是一個問題。
這樣,使用StringUtils.split就簡單多了,另外,我測試還發現StringUtils.split比jdk自帶的split要快四倍。
4)public static String join(Iterable iterable,String separator)
這個方法確實很實用,因為jdk自身沒有提供,簡單使用方法:
</div>
String[] numbers = {"one", "two", "three"}; StringUtils.join(numbers,","); // returns "one,two,three"
當然你可以傳遞一個數字或者迭代序列iterators.
好了,我確信,這個庫確實是一個比較實用的庫,推薦大家使用。
API請參考:http://commons.apache.org/lang/api-3.1/org/apache/commons/lang3/StringUtils.html
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!推薦閱讀
apache commons StringUtils介紹
apache commons StringUtils介紹 org.apache.commons.lang.StringUtils StringUtils是apache commons lang庫...Apache commons 包中的有用類介紹
一、 org.apache.commons.lang 1 、 CharRange 用來判斷一個 Char 是否位于某個范圍內; 2 、 CharSet 判斷一個或者多個字符是否位于一個字符集合中...Apache Commons Configuration簡介
使用Commons? Configuration可以很好的管理我們的配置文件的讀寫,官網: http://commons.apache.org/configuration/ 它支持對配置文件的讀...Apache Commons fileUpload實現文件上傳
Apache的commons-fileupload.jar 可方便的實現文件的上傳功能,本文通過實例來介紹如何使用 commons-fileupload.jar 。 將 Apache 的 com...sesese色