天天看點

【小家Java】common-lang3中StringUtils的使用詳解關注A哥

相關閱讀

【小家java】java5新特性(簡述十大新特性) 重要一躍

【小家java】java6新特性(簡述十大新特性) 雞肋更新

【小家java】java7新特性(簡述八大新特性) 不溫不火

【小家java】java8新特性(簡述十大新特性) 飽受贊譽

【小家java】java9新特性(簡述十大新特性) 褒貶不一

【小家java】java10新特性(簡述十大新特性) 小步疊代

【小家java】java11新特性(簡述八大新特性) 首個重磅LTS版本

每篇一句

天下沒有白吃的午餐,免費永遠是這個世界上最貴的東西

前言

上一篇博文已經講解了lang3下面的很多的API,但是StringUtils留在本文專門講解。因為這個工具類在日常使用中實在太多了。

本文的講解方式為:直接看執行個體,而不做過多的文字描述解釋

執行個體

public static boolean isEmpty(CharSequence cs)

這個可能用得是非常多的,null和空串都被定義為empty了喲

StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true
 StringUtils.isEmpty(" ")       = false  //注意這裡是false
 StringUtils.isEmpty("bob")     = false
 StringUtils.isEmpty("  bob  ") = false
           

public static boolean isAnyEmpty(CharSequence… css)

任意一個參數為空的話,傳回true。如果這些參數都不為空的話傳回false。在寫一些判斷條件的時候,這個方法還是很實用的。

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 //注意這個是false哦
 StringUtils.isAnyEmpty("foo", "bar")     = false 
           

public static boolean isNoneEmpty(CharSequence… css) 和isAnyEmpty取返

public static boolean isBlank(CharSequence cs)

判斷字元對象是不是空字元串,注意與isEmpty的差別。相當于深度的isEmpty

StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true
 StringUtils.isBlank(" ")       = true //注意此處是null哦  這和isEmpty不一樣的
 StringUtils.isBlank("bob")     = false
 StringUtils.isBlank("  bob  ") = false
           

isAnyBlank、isNoneBlank這裡就不再解釋了

public static String trim(String str)

移除字元串兩端的空字元串,制表符char <= 32如:\n \t 如果為null傳回null

StringUtils.trim(null)          = null
 StringUtils.trim("")            = ""
 StringUtils.trim("     ")       = ""
 StringUtils.trim("abc")         = "abc"
 StringUtils.trim("    abc    ") = "abc"
           

變體有如下:

public static String trimToNull(String str) //如果是null就傳回null,否則trim之後傳回

public static String trimToEmpty(String str)

public static int ordinalIndexOf(CharSequence str, CharSequence searchStr,int ordinal)

這個方法有時候會很有用的。字元串在另外一個字元串裡,出現第Ordinal次的位置

StringUtils.ordinalIndexOf("aabaabaa", "a", 1)  = 0
 StringUtils.ordinalIndexOf("aabaabaa", "a", 2)  = 1
 StringUtils.ordinalIndexOf("aabaabaa", "b", 1)  = 2
 StringUtils.ordinalIndexOf("aabaabaa", "b", 2)  = 5
 StringUtils.ordinalIndexOf("aabaabaa", "ab", 1) = 1
 StringUtils.ordinalIndexOf("aabaabaa", "ab", 2) = 4
 StringUtils.ordinalIndexOf("aabaabaa", "", 1)   = 0 //空串永遠通路0
 StringUtils.ordinalIndexOf("aabaabaa", "", 2)   = 0 //空串永遠通路0
           

對應的有:lastOrdinalIndexOf方法

public static boolean containsAny(CharSequence cs,char… searchChars)

是否包含後面數組中的任意對象,傳回true(和List裡的containsAll有點像)

StringUtils.containsAny(null, *)                = false
 StringUtils.containsAny("", *)                  = false
 StringUtils.containsAny(*, null)                = false
 StringUtils.containsAny(*, [])                  = false
 StringUtils.containsAny("zzabyycdxx",['z','a']) = true
 StringUtils.containsAny("zzabyycdxx",['b','y']) = true
 StringUtils.containsAny("aba", ['z'])           = false
           

public static String substring(String str,int start)

這個系列有的時候很有用,特别是下面的衍生方法:

//從左邊開始截取指定個數
public static String left(String str,int len)
//從右邊開始截取指定個數
public static String right(String str,int len)
//從中間的指定位置開始截取  指定個數
public static String mid(String str,int pos,int len)
           

public static String join(T… elements)、public static String join(Object[] array,char separator)

預設使用空串Join

StringUtils.join(null)            = null
 StringUtils.join([])              = ""
 StringUtils.join([null])          = ""
 StringUtils.join(["a", "b", "c"]) = "abc"
 StringUtils.join([null, "", "a"]) = "a"
           

自定義符号:特定字元串連接配接數組,很多情況下還是蠻實用,不用自己取拼字元串

StringUtils.join(null, *)               = null
 StringUtils.join([], *)                 = ""
 StringUtils.join([null], *)             = ""
 StringUtils.join(["a", "b", "c"], ';')  = "a;b;c"
 StringUtils.join(["a", "b", "c"], null) = "abc"
 StringUtils.join([null, "", "a"], ';')  = ";;a" //注意這裡和上面的差別
           

public static String deleteWhitespace(String str)

删除空格 這個方法還挺管用的。比trim給力

StringUtils.deleteWhitespace(null)         = null
 StringUtils.deleteWhitespace("")           = ""
 StringUtils.deleteWhitespace("abc")        = "abc"
 StringUtils.deleteWhitespace("   ab  c  ") = "abc"
           

public static String removeStart(String str,String remove)

删除以特定字元串開頭的字元串,如果沒有的話,就不删除。

這個方法有時候很管用啊

StringUtils.removeStart(null, *)      = null
 StringUtils.removeStart("", *)        = ""
 StringUtils.removeStart(*, null)      = *
 StringUtils.removeStart("www.domain.com", "www.")   = "domain.com"
 StringUtils.removeStart("domain.com", "www.")       = "domain.com"
 StringUtils.removeStart("www.domain.com", "domain") = "www.domain.com" //注意這個結果喲  并沒有删除任何東西
 StringUtils.removeStart("abc", "")    = "abc"
           

public static String rightPad(String str,int size,char padChar)

這個方法還是蠻管用的。對于生成統一長度的字元串的時候。

比如生成訂單号,為了保證長度統一,可以右邊自動用指定的字元補全至指定長度

StringUtils.rightPad(null, *, *)     = null
 StringUtils.rightPad("", 3, 'z')     = "zzz"
 StringUtils.rightPad("bat", 3, 'z')  = "bat"
 StringUtils.rightPad("bat", 5, 'z')  = "batzz"
 StringUtils.rightPad("bat", 1, 'z')  = "bat"
 StringUtils.rightPad("bat", -1, 'z') = "bat"
           

對應的:leftPad 左邊自動補全

public static String center(String str,int size)

将字元串擴充到指定的長度。把主體放在中間,兩邊自動用空串補齊

StringUtils.center(null, *)   = null
 StringUtils.center("", 4)     = "    "
 StringUtils.center("ab", -1)  = "ab"
 StringUtils.center("ab", 4)   = " ab "
 StringUtils.center("abcd", 2) = "abcd"
 StringUtils.center("a", 4)    = " a  "
           

public static String capitalize(String str)、uncapitalize

首字母大、小寫

public static String swapCase(String str)

去返大小寫 大變小 小變大

StringUtils.swapCase(null)                 = null
 StringUtils.swapCase("")                   = ""
 StringUtils.swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
           

public static boolean isAlpha(CharSequence cs)

判斷字元串是否全由字母組成 (隻要存在漢字、中文、數字都為false)

StringUtils.isAlpha(null)   = false
 StringUtils.isAlpha("")     = false
 StringUtils.isAlpha("  ")   = false
 StringUtils.isAlpha("abc")  = true
 StringUtils.isAlpha("ab2c") = false
 StringUtils.isAlpha("ab-c") = false
           

public static String reverse(String str)

字元串翻轉

StringUtils.reverse(null)  = null
 StringUtils.reverse("")    = ""
 StringUtils.reverse("bat") = "tab"
           

public static String abbreviate(String str,int maxWidth)

縮略字元串,省略号要占三位。maxWith小于3位會報錯。

這個在大篇幅需要顯示的時候,很管用有木有

StringUtils.abbreviate(null, *)      = null
 StringUtils.abbreviate("", 4)        = ""
 StringUtils.abbreviate("abcdefg", 6) = "abc..."
 StringUtils.abbreviate("abcdefg", 7) = "abcdefg"
 StringUtils.abbreviate("abcdefg", 8) = "abcdefg"
 StringUtils.abbreviate("abcdefg", 4) = "a..."
 StringUtils.abbreviate("abcdefg", 3) = IllegalArgumentException
           

進階用法:可以自定義縮略的部分内容角标

public static String wrap(String str,char wrapWith)

包裝,用後面的字元串對前面的字元串進行包裝

其實相當于前後拼了相同的串

StringUtils.wrap(null, *)        = null
 StringUtils.wrap("", *)          = ""
 StringUtils.wrap("ab", '\0')     = "ab"
 StringUtils.wrap("ab", 'x')      = "xabx"
 StringUtils.wrap("ab", '\'')     = "'ab'"
 StringUtils.wrap("\"ab\"", '\"') = "\"\"ab\"\""
           

isAllBlank、isAllEmpty

這些都不解釋了。處理數組可變參數而已

isAllLowerCase、isAllUpperCase

判斷字元串所有字元是否都是大、小寫

關注A哥

Author A哥(YourBatman)
個人站點 www.yourbatman.cn
E-mail [email protected]
微 信 fsx641385712

活躍平台

【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
【小家Java】common-lang3中StringUtils的使用詳解關注A哥
公衆号 BAT的烏托邦(ID:BAT-utopia)
知識星球 BAT的烏托邦
每日文章推薦 每日文章推薦
【小家Java】common-lang3中StringUtils的使用詳解關注A哥