詳談StringUtils3之StringUtils.isEmpty()和StringUtils.isB的區(qū)別
也許你兩個(gè)都不知道,也許你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道還有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,讓我們一起來(lái)探索org.apache.commons.lang3.StringUtils;這個(gè)工具類(lèi).
#isEmpty系列
StringUtils.isEmpty()
>>>是否為空. 可以看到 " " 空格是會(huì)繞過(guò)這種空判斷,因?yàn)槭且粋€(gè)空格,并不是嚴(yán)格的空值,會(huì)導(dǎo)致 isEmpty(" ")=false
StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false StringUtils.isEmpty(“bob”) = false StringUtils.isEmpty(" bob ") = false
/** * * <p>NOTE: This method changed in Lang version 2.0. * It no longer trims the CharSequence. * That functionality is available in isBlank().</p> * * @param cs the CharSequence to check, may be null * @return {@code true} if the CharSequence is empty or null * @since 3.0 Changed signature from isEmpty(String) to isEmpty(CharSequence) */ public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0; }
StringUtils.isNotEmpty()
>>>相當(dāng)于不為空 , = !isEmpty()
public static boolean isNotEmpty(final CharSequence cs) { return !isEmpty(cs); }
StringUtils.isAnyEmpty()
>>>是否有一個(gè)為空,只有一個(gè)為空,就為true.
StringUtils.isAnyEmpty(null) = true StringUtils.isAnyEmpty(null, “foo”) = true StringUtils.isAnyEmpty("", “bar”) = true StringUtils.isAnyEmpty(“bob”, “”) = true StringUtils.isAnyEmpty(" bob ", null) = true StringUtils.isAnyEmpty(" ", “bar”) = false StringUtils.isAnyEmpty(“foo”, “bar”) = false
/** * @param css the CharSequences to check, may be null or empty * @return {@code true} if any of the CharSequences are empty or null * @since 3.2 */ public static boolean isAnyEmpty(final CharSequence... css) { if (ArrayUtils.isEmpty(css)) { return true; } for (final CharSequence cs : css){ if (isEmpty(cs)) { return true; } } return false; }
StringUtils.isNoneEmpty()
>>>相當(dāng)于!isAnyEmpty(css) , 必須所有的值都不為空才返回true
/** * <p>Checks if none of the CharSequences are empty ("") or null.</p> * * <pre> * StringUtils.isNoneEmpty(null) = false * StringUtils.isNoneEmpty(null, "foo") = false * StringUtils.isNoneEmpty("", "bar") = false * StringUtils.isNoneEmpty("bob", "") = false * StringUtils.isNoneEmpty(" bob ", null) = false * StringUtils.isNoneEmpty(" ", "bar") = true * StringUtils.isNoneEmpty("foo", "bar") = true * </pre> * * @param css the CharSequences to check, may be null or empty * @return {@code true} if none of the CharSequences are empty or null * @since 3.2 */ public static boolean isNoneEmpty(final CharSequence... css) { return !isAnyEmpty(css); }
#isBank系列
StringUtils.isBlank()
>>> 是否為真空值(空格或者空值)
StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true StringUtils.isBlank(“bob”) = false StringUtils.isBlank(" bob ") = false
/** * <p>Checks if a CharSequence is whitespace, empty ("") or null.</p> * @param cs the CharSequence to check, may be null * @return {@code true} if the CharSequence is null, empty or whitespace * @since 2.0 * @since 3.0 Changed signature from isBlank(String) to isBlank(CharSequence) */ public static boolean isBlank(final CharSequence cs) { int strLen; if (cs == null || (strLen = cs.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if (Character.isWhitespace(cs.charAt(i)) == false) { return false; } } return true; }
StringUtils.isNotBlank()
>>> 是否真的不為空,不是空格或者空值 ,相當(dāng)于!isBlank();
public static boolean isNotBlank(final CharSequence cs) { return !isBlank(cs); }
StringUtils.isAnyBlank()
>>>是否包含任何真空值(包含空格或空值)
StringUtils.isAnyBlank(null) = true StringUtils.isAnyBlank(null, “foo”) = true StringUtils.isAnyBlank(null, null) = true StringUtils.isAnyBlank("", “bar”) = true StringUtils.isAnyBlank(“bob”, “”) = true StringUtils.isAnyBlank(" bob ", null) = true StringUtils.isAnyBlank(" ", “bar”) = true StringUtils.isAnyBlank(“foo”, “bar”) = false
/** * <p>Checks if any one of the CharSequences are blank ("") or null and not whitespace only..</p> * @param css the CharSequences to check, may be null or empty * @return {@code true} if any of the CharSequences are blank or null or whitespace only * @since 3.2 */ public static boolean isAnyBlank(final CharSequence... css) { if (ArrayUtils.isEmpty(css)) { return true; } for (final CharSequence cs : css){ if (isBlank(cs)) { return true; } } return false; }
StringUtils.isNoneBlank()
>>>是否全部都不包含空值或空格
StringUtils.isNoneBlank(null) = false StringUtils.isNoneBlank(null, “foo”) = false StringUtils.isNoneBlank(null, null) = false StringUtils.isNoneBlank("", “bar”) = false StringUtils.isNoneBlank(“bob”, “”) = false StringUtils.isNoneBlank(" bob ", null) = false StringUtils.isNoneBlank(" ", “bar”) = false StringUtils.isNoneBlank(“foo”, “bar”) = true
/** * <p>Checks if none of the CharSequences are blank ("") or null and whitespace only..</p> * @param css the CharSequences to check, may be null or empty * @return {@code true} if none of the CharSequences are blank or null or whitespace only * @since 3.2 */ public static boolean isNoneBlank(final CharSequence... css) { return !isAnyBlank(css); }
StringUtils的其他方法
可以參考官方的文檔,里面有詳細(xì)的描述,有些方法還是很好用的.
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
方法名 | 英文解釋 | 中文解釋 |
---|---|---|
IsEmpty/IsBlank | checks if a String contains text | 檢查字符串是否包含文本 |
Trim/Strip | removes leading and trailing whitespace | 刪除前導(dǎo)和尾隨空格 |
Equals/Compare | compares two strings null-safe | 比較兩個(gè)字符串是否為null安全的 |
startsWith | check if a String starts with a prefix null-safe | 檢查字符串是否以前綴null安全開(kāi)頭 |
endsWith | check if a String ends with a suffix null-safe | 檢查字符串是否以后綴null安全結(jié)尾 |
IndexOf/LastIndexOf/Contains | null-safe index-of checks | 包含空安全索引檢查 |
IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut | index-of any of a set of Strings | 任意一組字符串的索引 |
ContainsOnly/ContainsNone/ContainsAny | does String contains only/none/any of these characters | 字符串是否僅包含/無(wú)/這些字符中的任何一個(gè) |
Substring/Left/Right/Mid | null-safe substring extractions | 字符串安全提取 |
SubstringBefore/SubstringAfter/SubstringBetween | substring extraction relative to other strings -相對(duì)其他字符串的字符串提取 | |
Split/Join | splits a String into an array of substrings and vice versa | 將字符串拆分為子字符串?dāng)?shù)組,反之亦然 |
Remove/Delete | removes part of a String -刪除字符串的一部分 | |
Replace/Overlay | Searches a String and replaces one String with another | 搜索字符串,然后用另一個(gè)字符串替換 |
Chomp/Chop | removes the last part of a String | 刪除字符串的最后一部分 |
AppendIfMissing | appends a suffix to the end of the String if not present | 如果不存在后綴,則在字符串的末尾附加一個(gè)后綴 |
PrependIfMissing | prepends a prefix to the start of the String if not present | 如果不存在前綴,則在字符串的開(kāi)頭添加前綴 |
LeftPad/RightPad/Center/Repeat | pads a String | 填充字符串 |
UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize | changes the case of a String | 更改字符串的大小寫(xiě) |
CountMatches | counts the number of occurrences of one String in another | 計(jì)算一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的次數(shù) |
IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable | checks the characters in a String | 檢查字符串中的字符 |
DefaultString | protects against a null input String | 防止輸入字符串為空 |
Rotate | rotate (circular shift) a String | 旋轉(zhuǎn)(循環(huán)移位)字符串 |
Reverse/ReverseDelimited | reverses a String -反轉(zhuǎn)字符串 | |
Abbreviate | abbreviates a string using ellipsis or another given String | 使用省略號(hào)或另一個(gè)給定的String縮寫(xiě)一個(gè)字符串 |
Difference | compares Strings and reports on their differences | 比較字符串并報(bào)告其差異 |
LevenshteinDistance | the number of changes needed to change one String into another | 將一個(gè)String轉(zhuǎn)換為另一個(gè)String所需的更改次數(shù) |
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談java中math類(lèi)中三種取整函數(shù)的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談java中math類(lèi)中三種取整函數(shù)的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11淺談MyBatis3 DynamicSql風(fēng)格語(yǔ)法使用指南
這篇文章主要介紹了淺談MyBatis3 DynamicSql風(fēng)格語(yǔ)法使用指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03springboot詳解實(shí)現(xiàn)車(chē)險(xiǎn)理賠信息管理系統(tǒng)代碼
本系統(tǒng)基于Springboot開(kāi)發(fā)實(shí)現(xiàn)了一個(gè)為用戶(hù)車(chē)險(xiǎn)進(jìn)行理賠信息管理的一個(gè)信息化管理系統(tǒng),核心的業(yè)務(wù)主要是用戶(hù)申請(qǐng)保險(xiǎn)理賠,管理員審核進(jìn)入理賠程序,事故調(diào)查員對(duì)事故進(jìn)行調(diào)查和現(xiàn)場(chǎng)勘察,這其中共涉及到三類(lèi)用戶(hù),購(gòu)買(mǎi)保險(xiǎn)的客戶(hù),事故調(diào)查員和系統(tǒng)管理員2022-06-06Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式原理與用法詳解
這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式,簡(jiǎn)單說(shuō)明了責(zé)任鏈模式的概念、原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)責(zé)任鏈模式的具體用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08java通過(guò)URLClassLoader類(lèi)加載器加載外部jar代碼示例
ClassLoader翻譯過(guò)來(lái)就是類(lèi)加載器,普通的java開(kāi)發(fā)者其實(shí)用到的不多,但對(duì)于某些框架開(kāi)發(fā)者來(lái)說(shuō)卻非常常見(jiàn),下面這篇文章主要給大家介紹了關(guān)于java通過(guò)URLClassLoader類(lèi)加載器加載外部jar的相關(guān)資料,需要的朋友可以參考下2024-01-01java?list和map切割分段的實(shí)現(xiàn)及多線(xiàn)程應(yīng)用案例
這篇文章主要為大家介紹了java?list和map切割分段的實(shí)現(xiàn)及多線(xiàn)程應(yīng)用案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12java線(xiàn)程池的四種創(chuàng)建方式詳細(xì)分析
這篇文章主要介紹了java線(xiàn)程池的四種創(chuàng)建方式詳細(xì)分析,連接池是創(chuàng)建和管理一個(gè)連接的緩沖池的技術(shù),這些連接準(zhǔn)備好被任何需要它們的線(xiàn)程使用2022-07-07