【Java】StringUtils常用方法 string 擷取 判斷空值

筆記

StringUtils 常用方法 string 擷取 判斷空值,含 isEmpty()、 isNotEmpty()、 isNoneEmpty()、isAnyEmpty()、isBlank()、isNotBlank()、isNoneBlank()、isAnyBlank()、 isAllBlank()、isWhitespace()


一、常用的[截取字符串]的方法

各類用法:回傳 Sring 型別


(一)、指定[位置]截取字符串:

1. substring(String str ,int start)

說明:指定开始位置

StringUtils.substring(null, 2)); //null
StringUtils.substring("", 2));   //""
StringUtils.substring("abcdefg" , 0);  //abcdefg
StringUtils.substring("abcdefg" , 2);  //cdefg ,從左往右第二位開始截取
StringUtils.substring("abcdefg" , -2); //fg  ,從右往左第二位開始截取
2.substring(String str , int start , int end)

說明:指定起始位置和结束位置,從起始位置開始截取到结束位置(但不包含结束位置)

StringUtils.substring(null , 2 , 4); //null
StringUtils.substring("" , 2 , 4);   // ""
StringUtils.substring("abcdefg" , 0 , 0); // ""
StringUtils.substring("abcdefg" , 2 , 4); // cd
StringUtils.substring("abcdefg" , 2 , -5) //""
StringUtils.substring("abcdefghijk" , 2 , -3);// cdefgh

(二)、指定[分隔符]截取字符串

1.substringAfter(String str , String separator)

說明:從分隔符[第一次]出现的位置[向後]截取 ( 但不包含该分隔符 )

StringUtils.substringAfter("abcdefg" , "d"); //efg
StringUtils.substringAfter("abcdefg" , "cd");//efg
StringUtils.substringAfter("abcdefgabcdefg","d"); //efgabcdefg,從第一個分隔符號開始
StringUtils.substringAfter("abcdefg" , "g"); //""
StringUtils.substringAfter("abcdefg" , "m"); //"",分隔符不在要截取的字符串中,返回""
StringUtils.substringAfter("abcdefg" , "");  //abcdefg
StringUtils.substringAfter("abcdefg" , null);//""
2.substringAfterLast(String str , String separator)

說明:從分隔符[最後一次]出现的位置[向後]截取 ( 但不包含该分隔符 )

StringUtils.substringAfterLast("abcdefg" , "d"); //efg
StringUtils.substringAfterLast("abcdefgabcdefg" , "d"); //efg,從最後一個分隔符號開始向後截取
3.substringBefore(String str , String separator)

說明:從分隔符[第一次出]出现的位置[向前]截取

StringUtils.substringBefore("abcdefg", "d"); //abc
StringUtils.substringBefore("abcdefgabcdefg", "d");//abc
4.substringBeforeLast(String str , String separator)

說明:從分隔符[最后一次]出现的位置[向前]截取

StringUtils.substringBeforeLast("abcdefg", "d");//abc
StringUtils.substringBeforeLast("abcdefgabcdefg", "d"); //abcdefgabc,從最後一個分隔符開始向前截取號開始
5.substringBetween(String str , String tag)

說明:截取指定標記字符串之間的字符

StringUtils.substringBetween(null , "ch"); //null
StringUtils.substringBetween("" , "");  // ""
StringUtils.substringBetween("abcdefg" , ""); // ""
StringUtils.substringBetween("" , "tag");//null 
StringUtils.substringBetween("abcdefg" , null); //null
StringUtils.substringBetween("abcdefgabcdefg" , "ab"); //cdefg
6.substringBetween(String str , String open , String close)

說明:截取兩個字符之間的字符。

StringUtils.substringBetween("abcdefg" ,"ab","fg"); //cde

二、判斷 String 是否為空

各類用法:回傳boolean型別

CharSequence是一個描述字符串结構的接口,其中有三个常見的子類別:Stirng、StringBuffer、StirngBuilder。

blank、empty、whitespace的區別為:
blank:包含空串(“”)、null值、空白符(空格” “,tab鑑跳8格空白(“\t”),回車符號(“\r”),換行(“\n”)等)
empty:包含空串(“”)、null值
whitespace:包含空串(“”)、空白符(空格” “,tab鑑跳8格空白(“\t”),回車符號(“\r”),換行(“\n”)等),但不包含null值.

(一) isEmpty() 與 isNotEmpty() 與 isNoneEmpty() 與 isAnyEmpty()

說明:判斷標準是 str==null 或 str.length()==0。

//isEmpty():
StringUtils.isEmpty(null) // true
StringUtils.isEmpty("")   // true
StringUtils.isEmpty(" ")  // false
StringUtils.isEmpty("	")// false
StringUtils.isEmpty("\t") // false,tab鑑跳8格空白
StringUtils.isEmpty("\r") // false,回到本行最開始的位置
StringUtils.isEmpty("\n") // false,換行
StringUtils.isEmpty("a")  // false
//isNotEmpty():結果為isEmpty()的相反( 同 ! isEmpty() )
StringUtils.isNotEmpty(null)  // false
StringUtils.isNotEmpty("")    // false
StringUtils.isNotEmpty(" ")   // true
StringUtils.isNotEmpty("   ") // true
StringUtils.isNotEmpty("\t")  // true,tab鑑跳8格空白
StringUtils.isNotEmpty("\r")  // true,回到本行最開始的位置
StringUtils.isNotEmpty("\n")  // true,換行
StringUtils.isNotEmpty("a")   // true
//isNoneEmpty():是否[全部]都不包含[空值]或[空格](無ull)
StringUtils.isNoneEmpty(null, "a")  // false
StringUtils.isNoneEmpty(null, null) // false
StringUtils.isNoneEmpty("", "a")    // false
StringUtils.isNoneEmpty("a", "")    // false
StringUtils.isNoneEmpty(" a ", null)// false
StringUtils.isNoneEmpty(" ", "a")   // true
StringUtils.isNoneEmpty("a", "b")   // true
//isAnyEmpty():是否包含[任何]空值(包含空("")或null)
StringUtils.isAnyEmpty(null, "a")  // true
StringUtils.isAnyEmpty(null, null) // true
StringUtils.isAnyEmpty("", "a")    // true
StringUtils.isAnyEmpty("a", "")    // true
StringUtils.isAnyEmpty(" a ", null)// true
StringUtils.isAnyEmpty(" ", "a")   // false
StringUtils.isAnyEmpty("a", "b")   // false
//isAllEmpty():是否[全部]都是空值(包含空("")或null)
StringUtils.isAllEmpty(null, "a")  // false
StringUtils.isAllEmpty(null, null) // true
StringUtils.isAllEmpty("", "a")    // false
StringUtils.isAllEmpty("a", "")    // false
StringUtils.isAllEmpty(" a ", null)// false
StringUtils.isAllEmpty(" ", "a")   // false
StringUtils.isAllEmpty("a", "b")   // false

(二) isBlank() 與 isNotBlank() 與 isNoneBlank() 與 isAnyBlank() 與 isAllBlank()

說明:判斷標準是 str==null 或 str.length()==0 與 Character.isWhitespace判斷不可有(空格、tab鑑、換行)。

//isBlank():
StringUtils.isBlank(null) // true
StringUtils.isBlank("")   // true
StringUtils.isBlank(" ")  // true
StringUtils.isBlank("	")// true,tab鍵
StringUtils.isBlank("\t") // true,tab鑑跳8格空白
StringUtils.isBlank("\r") // true,回到本行最開始的位置
StringUtils.isBlank("\n") // true,換行
StringUtils.isBlank("a")  // false
//isNotBlank():結果與isBlank()相反( 同 ! isBlank() )
StringUtils.isNotBlank(null) // false
StringUtils.isNotBlank("")   // false
StringUtils.isNotBlank(" ")  // false
StringUtils.isNotBlank("   ")// false,tab鍵
StringUtils.isNotBlank("\t") // false,tab鍵跳8格空白
StringUtils.isNotBlank("\r") // false,回到本行最開始的位置
StringUtils.isNotBlank("\n") // false,換行
StringUtils.isNotBlank("a")  // true

//isNoneBlank():是否[全部]都不包含[空值]或[空格](無ull)
StringUtils.isNoneBlank(null, "a")  // false
StringUtils.isNoneBlank(null, null) // false
StringUtils.isNoneBlank("", "a")    // false
StringUtils.isNoneBlank("a", "")    // false
StringUtils.isNoneBlank(" a ", null)// false
StringUtils.isNoneBlank(" ", "a")   // false
StringUtils.isNoneBlank("a", "b")   // true

//isAnyBlank():是否包含[任何]真空值(包含空格或空值)
StringUtils.isAnyBlank(null, "a")  // true
StringUtils.isAnyBlank(null, null) // true
StringUtils.isAnyBlank("", "a")    // true
StringUtils.isAnyBlank("a", "")    // true
StringUtils.isAnyBlank(" a ", null)// true
StringUtils.isAnyBlank(" ", "a")   // true
StringUtils.isAnyBlank("a", "b")   // false

//isAllBlank():是否[全部]都是真空值(包含空格或空值)
StringUtils.isAllBlank("a", "b", "b") // false
StringUtils.isAllBlank("", "a", "b")  // false
StringUtils.isAllBlank(" ", "a", "b") // false
StringUtils.isAllBlank(null, "a", "b")// false
StringUtils.isAllBlank(null, "", "a") // false
StringUtils.isAllBlank(null, "", "  ")// true

(三) isWhitespace()

說明:判斷標準是Character.isWhitespace判斷不可有(空格、tab鑑、換行),無判斷null

StringUtils.isWhitespace("");    // true
StringUtils.isWhitespace(" ");   // true
StringUtils.isWhitespace("   "); // true
StringUtils.isWhitespace("\t");  // true
StringUtils.isWhitespace("\r");  // true
StringUtils.isWhitespace("\n");  // true
StringUtils.isWhitespace(null);  // false
StringUtils.isWhitespace("a");   // false

Related Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js