日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Commons Lang StringUtils

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Commons Lang StringUtils 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因此,認為最好談論我喜歡的另一個Java庫。 它已經存在了一段時間,也許不是最令人興奮的庫,但是它非常有用。 我可能每天都使用它。

org.apache.commons.lang.StringUtils

StringUtils是Apache Commons Lang( http://commons.apache.org/lang/ )的一部分,顧名思義,它提供了一些不錯的實用程序來處理String,這超出了java.lang.String所提供的功能。 它由50多種靜態方法組成,我不會覆蓋其中的每一個方法,而只是我最常使用的一些方法。

有兩個不同的版本,較新的org.apache.commons.lang3.StringUtils和較舊的org.apache.commons.lang.StringUtils 。 兩者之間確實沒有任何顯著差異。 lang3.StringUtils需要Java 5.0,可能是您要使用的版本。

公共靜態布爾值equals(CharSequence str1,CharSequence str2)

以為我會從最直接的方法之一開始 等于 。 這完全符合您的期望,它接受兩個String,如果相同則返回true,否則返回false。

但是java.lang.String已經有一個完美的equals方法嗎? 我到底為什么要使用第三方實現?

這是一個公平的問題。 讓我們看一些代碼,您能看到任何問題嗎?

public void doStuffWithString(String stringParam) {if(stringParam.equals("MyStringValue")) {// do stuff} }

那是一個NullPointerException等待發生!

有兩種解決方法:

public void safeDoStuffWithString1(String stringParam) {if(stringParam != null && stringParam.equals("MyStringValue")) {// do stuff} }public void safeDoStuffWithString2(String stringParm) {if("MyStringValue".equals(stringParam)) {// do stuff} }

我個人不喜歡這兩種方法。 我認為null會檢查污染代碼,對我來說,“ MyStringValue” .equals(stringParam)的掃描效果不佳,它看起來是錯誤的。

這是StringUtils.equals派上用場的地方,它是null安全的。 不管您通過什么,都不會變成NullPointer! 因此,您可以按以下方式重寫簡單方法:

public void safeDoStuffWithString3(String stringParam) {if(StringUtils.equals(stringParam,"MyStringValue)) {// do stuff} }

這是個人喜好,但我認為這比前兩個示例更好。 它們沒有什么問題,但我確實認為StringUtils.equals()值得考慮。

isEmpty,isNotEmpty,isBlank,isNotBlank


好吧,這些看起來很容易解釋,我猜它們都是空安全的嗎?

您可能在這里發現了一種模式。 isEmpty實際上是java.lang.String.isEmpty()的空安全替代品,而isNotEmpty是相反的。 因此,不再有null檢查:

if(myString != null && !myString.isEmpty()) { // urghh// Do stuff with myString }if(StringUtils.isNotEmpty(myString)) { // much nicer// Do stuff with myString }

那么,為什么空白和空?

有所不同,如果String僅包含空格,則isBlank也返回true,即…

String someWhiteSpace = " \t \n"; StringUtils.isEmpty(someWhiteSpace); // false StringUtils.isBlank(someWhiteSpace); // true

公共靜態String [] split(String str,String spacerChars)

對,看起來就像String.split(),所以這只是內置Java方法的null安全版本嗎?

好吧,是的,它當然是無效的。 嘗試拆分null字符串將導致null,并且null分隔符將在空白處拆分。 但是還有另一個原因,您應該考慮使用StringUtils.split(…) ,這就是java.lang.String.split使用正則表達式作為分隔符的事實。 例如,以下可能無法滿足您的要求:

public void possiblyNotWhatYouWant() {String contrivedExampleString = "one.two.three.four";String[] result = contrivedExampleString.split(".");System.out.println(result.length); // 0 }

但是我要做的就是在“。”前面加上兩個反斜杠。 它將正常工作。 沒什么大不了的嗎?
也許不是,但是使用StringUtils.split的最后一個優勢是,正則表達式很昂貴。 實際上,當我測試用逗號分割字符串時(根據我的經驗, 是相當普遍的用例), StingUtils.split的運行速度快了四倍!

公共靜態字符串連接(可迭代,字符串分隔符)

啊,終于有真正有用的東西了!

的確,我從來沒有找到一種用分隔符將字符串連接起來的優雅方法,總有煩人的條件要求檢查是否要插入分隔符。 因此,很高興為我提供了一個實用程序。 這是一個簡單的示例:

String[] numbers = {"one", "two", "three"}; StringUtils.join(numbers,","); // returns "one,two,three"

還有各種采用Array和Iterators的重載版本。

好吧,我堅信。 這看起來像一個非常有用的庫,它還能做什么?
相當多,但是就像我之前說的,我不會打擾所有可用的方法,最后我會重復API文檔中的內容。 我真的建議您仔細看看: http : //commons.apache.org/lang/api-3.1/org/apache/commons/lang3/StringUtils.html

因此,基本上,如果您需要使用Java核心String庫未涵蓋的String(甚至可能包含的東西)做某事,請查看StringUtils。

參考:來自我們JCG合作伙伴的 Apache Commons Lang StringUtils ? Tom 's編程博客上的 Tom Jefferys。


翻譯自: https://www.javacodegeeks.com/2012/02/apache-commons-lang-stringutils.html

總結

以上是生活随笔為你收集整理的Apache Commons Lang StringUtils的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。