開發(fā)中經(jīng)常有些小細(xì)節(jié)容易忽略,這些小細(xì)節(jié)往往容易導(dǎo)致代碼缺陷,今天分享一波工具類的小細(xì)節(jié)
也許你兩個都不知道,也許你除了isEmpty
/isNotEmpty
/isNotBlank
/isBlank
外,并不知道還有isAnyEmpty
/isNoneEmpty
/isAnyBlank
/isNoneBlank
的存在, come on ,讓我們一起來探索org.apache.commons.lang3.StringUtils;
這個工具類。
isEmpty系列
StringUtils.isEmpty()
是否為空. 可以看到 " " 空格是會繞過這種空判斷,因為是一個空格,并不是嚴(yán)格的空值,會導(dǎo)致isEmpty(" ")=false
StringUtils.isEmpty(null)=true
StringUtils.isEmpty("")=true
StringUtils.isEmpty("")=false
StringUtils.isEmpty("bob")=false
StringUtils.isEmpty("bob")=false
/**
*
*NOTE:ThismethodchangedinLangversion2.0.
*ItnolongertrimstheCharSequence.
*ThatfunctionalityisavailableinisBlank().
*
*@paramcstheCharSequencetocheck,maybenull
*@return{@codetrue}iftheCharSequenceisemptyornull
*@since3.0ChangedsignaturefromisEmpty(String)toisEmpty(CharSequence)
*/
publicstaticbooleanisEmpty(finalCharSequencecs){
returncs==null||cs.length()==0;
}
StringUtils.isNotEmpty()
相當(dāng)于不為空 ,= !isEmpty()
。
publicstaticbooleanisNotEmpty(finalCharSequencecs){
return!isEmpty(cs);
}
StringUtils.isAnyEmpty()
是否有一個為空,只有一個為空,就為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
/**
*@paramcsstheCharSequencestocheck,maybenullorempty
*@return{@codetrue}ifanyoftheCharSequencesareemptyornull
*@since3.2
*/
publicstaticbooleanisAnyEmpty(finalCharSequence...css){
if(ArrayUtils.isEmpty(css)){
returntrue;
}
for(finalCharSequencecs:css){
if(isEmpty(cs)){
returntrue;
}
}
returnfalse;
}
StringUtils.isNoneEmpty()
相當(dāng)于!isAnyEmpty(css)
, 必須所有的值都不為空才返回true
/**
*ChecksifnoneoftheCharSequencesareempty("")ornull.
*
*
*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
*
*
*@paramcsstheCharSequencestocheck,maybenullorempty
*@return{@codetrue}ifnoneoftheCharSequencesareemptyornull
*@since3.2
*/
publicstaticbooleanisNoneEmpty(finalCharSequence...css){
isBank系列
StringUtils.isBlank()
是否為真空值(空格或者空值)
StringUtils.isBlank(null)=true
StringUtils.isBlank("")=true
StringUtils.isBlank("")=true
StringUtils.isBlank("bob")=false
StringUtils.isBlank("bob")=false
/**
*ChecksifaCharSequenceiswhitespace,empty("")ornull.
*@paramcstheCharSequencetocheck,maybenull
*@return{@codetrue}iftheCharSequenceisnull,emptyorwhitespace
*@since2.0
*@since3.0ChangedsignaturefromisBlank(String)toisBlank(CharSequence)
*/
publicstaticbooleanisBlank(finalCharSequencecs){
intstrLen;
if(cs==null||(strLen=cs.length())==0){
returntrue;
}
for(inti=0;iif(Character.isWhitespace(cs.charAt(i))==false){
returnfalse;
}
}
returntrue;
}
StringUtils.isNotBlank()
是否真的不為空,不是空格或者空值 ,相當(dāng)于!isBlank();
publicstaticbooleanisNotBlank(finalCharSequencecs){
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
/**
*ChecksifanyoneoftheCharSequencesareblank("")ornullandnotwhitespaceonly..
*@paramcsstheCharSequencestocheck,maybenullorempty
*@return{@codetrue}ifanyoftheCharSequencesareblankornullorwhitespaceonly
*@since3.2
*/
publicstaticbooleanisAnyBlank(finalCharSequence...css){
if(ArrayUtils.isEmpty(css)){
returntrue;
}
for(finalCharSequencecs:css){
if(isBlank(cs)){
returntrue;
}
}
returnfalse;
}
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
/**
*ChecksifnoneoftheCharSequencesareblank("")ornullandwhitespaceonly..
*@paramcsstheCharSequencestocheck,maybenullorempty
*@return{@codetrue}ifnoneoftheCharSequencesareblankornullorwhitespaceonly
*@since3.2
*/
publicstaticbooleanisNoneBlank(finalCharSequence...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 | 比較兩個字符串是否為null安全的 |
startsWith | check if a String starts with a prefix null-safe | 檢查字符串是否以前綴null安全開頭 |
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 | 字符串是否僅包含/無/這些字符中的任何一個 |
Substring/Left/Right/Mid | null-safe substring extractions | 字符串安全提取 |
SubstringBefore/SubstringAfter/SubstringBetween | substring extraction relative to other strings -相對其他字符串的字符串提取 | |
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 | 搜索字符串,然后用另一個字符串替換 |
Chomp/Chop | removes the last part of a String | 刪除字符串的最后一部分 |
AppendIfMissing | appends a suffix to the end of the String if not present | 如果不存在后綴,則在字符串的末尾附加一個后綴 |
PrependIfMissing | prepends a prefix to the start of the String if not present | 如果不存在前綴,則在字符串的開頭添加前綴 |
LeftPad/RightPad/Center/Repeat | pads a String | 填充字符串 |
UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize | changes the case of a String | 更改字符串的大小寫 |
CountMatches | counts the number of occurrences of one String in another | 計算一個字符串在另一個字符串中出現(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 | 使用省略號或另一個給定的String縮寫一個字符串 |
Difference | compares Strings and reports on their differences | 比較字符串并報告其差異 |
LevenshteinDistance | the number of changes needed to change one String into another | 將一個String轉(zhuǎn)換為另一個String所需的更改次數(shù) |
審核編輯:湯梓紅
-
代碼
+關(guān)注
關(guān)注
30文章
4753瀏覽量
68368 -
工具
+關(guān)注
關(guān)注
4文章
308瀏覽量
27742
原文標(biāo)題:isEmpty 和 isBlank 請別亂用了,小心把服務(wù)器搞崩!
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論