天天看點

Java - StringUtils(Apache - CommonLang3)

1、public static boolean isEmpty(CharSequence cs)

常用函數之一,判斷字元串是否為""或者null

  • StringUtils.isEmpty(null)        = true
  • StringUtils.isEmpty("")           = true
  • StringUtils.isEmpty(" ")          = false
  • StringUtils.isEmpty("bob")     = false
  • StringUtils.isEmpty("  bob  ") = false

2、public static boolean isNotEmpty(CharSequence cs)

最常用函數之一,跟上面方法相對

  • StringUtils.isNotEmpty(null)        = false
  • StringUtils.isNotEmpty("")           = false
  • StringUtils.isNotEmpty(" ")          = true
  • StringUtils.isNotEmpty("bob")     = true
  • StringUtils.isNotEmpty("  bob  ") = true

3、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
  • StringUtils.isAnyEmpty("foo", "bar")     = false

4、public static boolean isNoneEmpty(CharSequence... css)

任意一個參數是空,傳回false;

所有參數都不為空,傳回true。

注意這些方法的用法。

  • 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

5、public static boolean isBlank(CharSequence cs)

判斷字元對象是不是空字元串,注意與isEmpty的差別。

  • StringUtils.isBlank(null)        = true
  • StringUtils.isBlank("")           = true
  • StringUtils.isBlank(" ")          = true
  • StringUtils.isBlank("bob")     = false
  • StringUtils.isBlank("  bob  ") = false

6、public static boolean isNotBlank(CharSequence cs)

原理同上。

  • StringUtils.isNotBlank(null)        = false
  • StringUtils.isNotBlank("")           = false
  • StringUtils.isNotBlank(" ")          = false
  • StringUtils.isNotBlank("bob")     = true
  • StringUtils.isNotBlank("  bob  ") = true

7、public static boolean isAnyBlank(CharSequence... css)

  • 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

8、public static boolean isNoneBlank(CharSequence... css)

  • 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

9、public static String trim(String str)

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

如果為空的話,傳回空。

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

變體有,不常用,跟trim()方法類似。

  • public static String trimToNull(String str)
  • public static String trimToEmpty(String str)

10、public static String strip(String str)

public static String strip(String str, String stripChars)

str:被處理的字元串,可為空。

stripChars: 删除的字元串。

  • StringUtils.strip(null, *)                = null
  • StringUtils.strip("", *)                   = ""
  • StringUtils.strip("abc", null)         = "abc"
  • StringUtils.strip("  abc", null)       = "abc"
  • StringUtils.strip("abc  ", null)       = "abc"
  • StringUtils.strip(" abc ", null)       = "abc"
  • StringUtils.strip("  abcyx", "xyz") = "  abc"

11、public static boolean equals(CharSequence cs1, CharSequence cs2)

字元串比對方法,是比較實用的方法之一,兩個比較的字元串都能為空,不會報空指針異常。

  • StringUtils.equals(null, null)         = true
  • StringUtils.equals(null, "abc")      = false
  • StringUtils.equals("abc", null)      = false
  • StringUtils.equals("abc", "abc")   = true
  • StringUtils.equals("abc", "ABC")  = false

12、public static boolean equalsIgnoreCase(CharSequence str1, CharSequence str2)

上面方法的變體。字元串比較(忽略大小寫),在驗證碼……等字元串比較,真是很實用。 

  • StringUtils.equalsIgnoreCase(null, null)         = true
  • StringUtils.equalsIgnoreCase(null, "abc")      = false
  • StringUtils.equalsIgnoreCase("abc", null)      = false
  • StringUtils.equalsIgnoreCase("abc", "abc")    = true
  • StringUtils.equalsIgnoreCase("abc", "ABC")  = true

13、public static int indexOf(CharSequence seq, int searchChar)

indexOf這個方法不必多說,這個方法主要處理掉了空字元串的問題,不會報空指針,有一定用處。

  • StringUtils.indexOf(null, *)                = -1
  • StringUtils.indexOf("", *)                   = -1
  • StringUtils.indexOf("aabaabaa", 'a') = 0
  • StringUtils.indexOf("aabaabaa", 'b') = 2

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

字元串在另外一個字元串裡,出現第Ordinal次的位置。

  • StringUtils.ordinalIndexOf(null, *, *)                   = -1
  • StringUtils.ordinalIndexOf(*, null, *)                   = -1
  • StringUtils.ordinalIndexOf("", "", *)                     = 0
  • 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
  • StringUtils.ordinalIndexOf("aabaabaa", "", 2)     = 0

15、public static int lastIndexOf(CharSequence seq, int searchChar)

字元串最後一次出現的位置。

  • StringUtils.lastIndexOf(null, *)                = -1
  • StringUtils.lastIndexOf("", *)                   = -1
  • StringUtils.lastIndexOf("aabaabaa", 'a') = 7
  • StringUtils.lastIndexOf("aabaabaa", 'b') = 5

16、public static int lastOrdinalIndexOf(CharSequence str, CharSequence searchStr, int ordinal)

 字元串searchStr在str裡面出現倒數第ordinal出現的位置。

  • StringUtils.lastOrdinalIndexOf(null, *, *)                   = -1
  • StringUtils.lastOrdinalIndexOf(*, null, *)                   = -1
  • StringUtils.lastOrdinalIndexOf("", "", *)                     = 0
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "a", 1)   = 7
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "a", 2)   = 6
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "b", 1)   = 5
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "b", 2)   = 2
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 1) = 4
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 2) = 1
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "", 1)     = 8
  • StringUtils.lastOrdinalIndexOf("aabaabaa", "", 2)     = 8

17、public static boolean contains(CharSequence seq, int searchChar)

字元串seq是否包含searchChar。

  • StringUtils.contains(null, *)     = false
  • StringUtils.contains("", *)        = false
  • StringUtils.contains("abc", 'a') = true
  • StringUtils.contains("abc", 'z') = false

18、public static boolean containsAny(CharSequence cs, char... searchChars)

包含後面數組中的任意對象,傳回true。

  • 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

19、public static String substring(String str, int start)

字元串截取。

  • StringUtils.substring(null, *)     = null
  • StringUtils.substring("", *)        = ""
  • StringUtils.substring("abc", 0)  = "abc"
  • StringUtils.substring("abc", 2)  = "c"
  • StringUtils.substring("abc", 4)  = ""
  • StringUtils.substring("abc", -2) = "bc"
  • StringUtils.substring("abc", -4) = "abc"

這三個方法類似都是截取字元串。

  • 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)

20、public static String[] split(String str, String separatorChars)

字元串分割。

  • StringUtils.split(null, *)              = null
  • StringUtils.split("", *)                 = []
  • StringUtils.split("abc def", null) = ["abc", "def"]
  • StringUtils.split("abc def", " ")   = ["abc", "def"]
  • StringUtils.split("abc  def", " ")  = ["abc", "def"]
  • StringUtils.split("ab:cd:ef", ":")  = ["ab", "cd", "ef"]

21、public static <T> String join(T... elements)

字元串連接配接。

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

22、public static String join(Object[] array, char separator)

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

  • 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"

23、public static String deleteWhitespace(String str)

删除空格。

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

24、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"

25、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"

26、public static String leftPad(String str, int size, char padChar)

左邊自動補齊。

  • StringUtils.leftPad(null, *, *)      = null
  • StringUtils.leftPad("", 3, 'z')       = "zzz"
  • StringUtils.leftPad("bat", 3, 'z')  = "bat"
  • StringUtils.leftPad("bat", 5, 'z')  = "zzbat"
  • StringUtils.leftPad("bat", 1, 'z')  = "bat"
  • StringUtils.leftPad("bat", -1, 'z') = "bat"

27、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  "

28、public static String capitalize(String str)

首字母大寫。

  • StringUtils.capitalize(null)   = null
  • StringUtils.capitalize("")      = ""
  • StringUtils.capitalize("cat") = "Cat"
  • StringUtils.capitalize("cAt") = "CAt"

29、public static String swapCase(String str)

反向大小寫。

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

30、public static boolean isAlpha(CharSequence cs)

判斷字元串是否由字母組成。

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

31、public static String defaultString(String str, String defaultStr)

預設字元串,相當于三目運算,前面弱為空,則傳回後面一個參數。

  • StringUtils.defaultString(null, "NULL")   = "NULL"
  • StringUtils.defaultString("", "NULL")      = ""
  • StringUtils.defaultString("bat", "NULL") = "bat"

32、public static String reverse(String str)

字元串翻轉。

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

33、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

34、public static String abbreviate(String str, int offset, int maxWidth)

縮略字元串的一些進階用法。

  • StringUtils.abbreviate(null, *, *)                             = null
  • StringUtils.abbreviate("", 0, 4)                               = ""
  • StringUtils.abbreviate("abcdefghijklmno", -1, 10)  = "abcdefg..."
  • StringUtils.abbreviate("abcdefghijklmno", 0, 10)   = "abcdefg..."
  • StringUtils.abbreviate("abcdefghijklmno", 1, 10)   = "abcdefg..."
  • StringUtils.abbreviate("abcdefghijklmno", 4, 10)   = "abcdefg..."
  • StringUtils.abbreviate("abcdefghijklmno", 5, 10)   = "...fghi..."
  • StringUtils.abbreviate("abcdefghijklmno", 6, 10)   = "...ghij..."
  • StringUtils.abbreviate("abcdefghijklmno", 8, 10)   = "...ijklmno"
  • StringUtils.abbreviate("abcdefghijklmno", 10, 10) = "...ijklmno"
  • StringUtils.abbreviate("abcdefghijklmno", 12, 10) = "...ijklmno"
  • StringUtils.abbreviate("abcdefghij", 0, 3)              = IllegalArgumentException
  • StringUtils.abbreviate("abcdefghij", 5, 6)              = IllegalArgumentException

35、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\"\""