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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Apache Commons Lang StringUtils

發(fā)布時(shí)間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Commons Lang StringUtils 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
因此,認(rèn)為最好談?wù)撐蚁矚g的另一個(gè)Java庫(kù)。 它已經(jīng)存在了一段時(shí)間,也許不是最令人興奮的庫(kù),但是它非常有用。 我可能每天都使用它。

org.apache.commons.lang.StringUtils

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

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

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

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

但是java.lang.String已經(jīng)有一個(gè)完美的equals方法嗎? 我到底為什么要使用第三方實(shí)現(xiàn)?

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

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

那是一個(gè)NullPointerException等待發(fā)生!

有兩種解決方法:

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

我個(gè)人不喜歡這兩種方法。 我認(rèn)為null會(huì)檢查污染代碼,對(duì)我來(lái)說(shuō),“ MyStringValue” .equals(stringParam)的掃描效果不佳,它看起來(lái)是錯(cuò)誤的。

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

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

這是個(gè)人喜好,但我認(rèn)為這比前兩個(gè)示例更好。 它們沒(méi)有什么問(wèn)題,但我確實(shí)認(rèn)為StringUtils.equals()值得考慮。

isEmpty,isNotEmpty,isBlank,isNotBlank


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

您可能在這里發(fā)現(xiàn)了一種模式。 isEmpty實(shí)際上是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

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

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

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

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

但是我要做的就是在“。”前面加上兩個(gè)反斜杠。 它將正常工作。 沒(méi)什么大不了的嗎?
也許不是,但是使用StringUtils.split的最后一個(gè)優(yōu)勢(shì)是,正則表達(dá)式很昂貴。 實(shí)際上,當(dāng)我測(cè)試用逗號(hào)分割字符串時(shí)(根據(jù)我的經(jīng)驗(yàn), 是相當(dāng)普遍的用例), StingUtils.split的運(yùn)行速度快了四倍!

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

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

的確,我從來(lái)沒(méi)有找到一種用分隔符將字符串連接起來(lái)的優(yōu)雅方法,總有煩人的條件要求檢查是否要插入分隔符。 因此,很高興為我提供了一個(gè)實(shí)用程序。 這是一個(gè)簡(jiǎn)單的示例:

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

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

好吧,我堅(jiān)信。 這看起來(lái)像一個(gè)非常有用的庫(kù),它還能做什么?
相當(dāng)多,但是就像我之前說(shuō)的,我不會(huì)打擾所有可用的方法,最后我會(huì)重復(fù)API文檔中的內(nèi)容。 我真的建議您仔細(xì)看看: http : //commons.apache.org/lang/api-3.1/org/apache/commons/lang3/StringUtils.html

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

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


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

總結(jié)

以上是生活随笔為你收集整理的Apache Commons Lang StringUtils的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。