StringUtils學(xué)習(xí)筆記

一、StringUtils字符串工具類(lèi)

1.1.判斷是否空字符串

  • isBlank(final CharSequence cs):判斷是空字符串;
  • isNotBlank(final CharSequence cs):判斷不是空字符串;
  • isEmpty(final CharSequence cs):判斷是空字符串;
  • isNotEmpty(final CharSequence cs):判斷不是空字符串;

字符串判空示例代碼

StringUtils.isBlank(null);      = true
StringUtils.isBlank("");        = true
StringUtils.isBlank(" ");       = true
StringUtils.isBlank("bob");     = false
StringUtils.isBlank("  bob  "); = false
StringUtils.isEmpty(null);      = true
StringUtils.isEmpty("");        = true
StringUtils.isEmpty(" ");       = false
StringUtils.isEmpty("bob");     = false
StringUtils.isEmpty("  bob  "); = false

說(shuō)明:isBlankisEmpty的區(qū)別在于在于空格字符串的判斷不同;簡(jiǎn)言之,Empty認(rèn)為空格字符不是空字符串

1.2.判斷是否存在空字符串

  • isAnyEmpty(final CharSequence... css):判斷是否存在空字符串;
  • isNoneEmpty(final CharSequence... css)判斷全部都不是空字符串;
  • isAllEmpty(final CharSequence... css):判斷全部為空字符串;
  • isAnyBlank(final CharSequence... css):判斷是否存在空字符串;
  • isNoneBlank(final CharSequence... css)判斷全部都不是空字符串;
  • isAllBlank(final 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(new String[] {})  = false
StringUtils.isAnyBlank(new String[]{""}) = true
StringUtils.isAnyBlank("foo", "bar")     = false

說(shuō)明:同理,這里的區(qū)別也是在于空格字符串的不同對(duì)待;

1.3.去除字符串前后空格

  • trim(final String str):去除字符串前后空格,同時(shí)不改變?cè)址?/li>
  • trimToNull(final String str):去除字符串前后空格,如果去除后是空字符串就轉(zhuǎn)為null;
  • trimToEmpty(final String str):去除字符串前后空格,如果去除后是空字符串就轉(zhuǎn)為空字符串(null轉(zhuǎn)為"");
  • strip(final String str):這個(gè)也可以去除字符串的前后空格,不改變?cè)址?/li>
  • stripToNull(String str):同trimToNull(final String str)類(lèi)似;
  • stripToEmpty(final String str):同trimToEmpty(final String str)類(lèi)似;

去除字符串前后空格示例代碼

StringUtils.trim(null)                = null
StringUtils.trim("     ")             = ""
StringUtils.trimToNull(null)          = null
StringUtils.trimToNull("     ")       = null
StringUtils.trimToEmpty(null)         = ""
StringUtils.trimToEmpty("     ")      = ""

1.4.字符串截取

  • truncate(final String str, final int maxWidth):截取字符串的前maxWidth個(gè)字符;
    • 如果str的長(zhǎng)度小于maxWidth就直接返回str
    • 如果maxWidth小于0則拋出IllegalArgumentException異常;
  • truncate(final String str, final int offset, final int maxWidth):截取指定區(qū)域的字符串;

字符串截取示例代碼

StringUtils.truncate(null, 0)       = null
StringUtils.truncate(null, 2)       = null
StringUtils.truncate("", 4)         = ""
StringUtils.truncate("abcdefg", 4)  = "abcd"
StringUtils.truncate(null, 0, 0) = null
StringUtils.truncate(null, 2, 4) = null
StringUtils.truncate("", 0, 10) = ""
StringUtils.truncate("", 2, 10) = ""
StringUtils.truncate("abcdefghij", 0, 3) = "abc"
StringUtils.truncate("abcdefghij", 5, 6) = "fghij"
StringUtils.truncate("abcdefghijklmno", -1, 10) = throws an IllegalArgumentException
StringUtils.truncate("abcdefghijklmno", Integer.MIN_VALUE, 10) = "abcdefghij"
StringUtils.truncate("abcdefghijklmno", 0, Integer.MAX_VALUE) = "abcdefghijklmno"

說(shuō)明:更多的示例代碼可以參考StringUtils源碼;

1.5.字符串的剝離

  • strip(String str, final String stripChars):從str的前后剝離stripChars字符串;
  • stripStart(final String str, final String stripChars):從開(kāi)始的地方剝離指定字符串;
  • stripEnd(final String str, final String stripChars):從結(jié)束的地方剝離字符串;
  • String[] stripAll(final String... strs):對(duì)數(shù)組中的所有字符串進(jìn)行去除空格;
  • String[] stripAll(final String[] strs, final String stripChars):對(duì)數(shù)組中的每個(gè)字符串進(jìn)行字符串剝離;

字符串的剝離示例代碼

StringUtils.strip("abcde", "de");  = abc
StringUtils.strip("abcde", "ed");  = abc
StringUtils.stripStart("deabced", "ed");  = abcd
StringUtils.stripStart("deabced", "de");  = abcd
StringUtils.stripEnd("  abcyx", "xyz");   = "  abc"
StringUtils.stripEnd("120.00", ".0");     = "12"
StringUtils.stripAll(["abc", "  abc"]);   = ["abc", "abc"]
StringUtils.stripAll(["yabcz", null], "yz");  = ["abc", null]

1.6.字符串的比較

  • equals(final CharSequence cs1, final CharSequence cs2):判斷兩個(gè)字符串是否相等;
  • equalsIgnoreCase(final CharSequence str1, final CharSequence str2):判斷兩個(gè)字符串在忽略大小寫(xiě)下是否相等;
  • compare(final String str1, final String str2):比較兩個(gè)字符串長(zhǎng)度的大小;
  • compareIgnoreCase(final String str1, final String str2)忽略大小寫(xiě)下比較兩個(gè)字符串的大小;
  • equalsAny(final CharSequence string, final CharSequence... searchStrings):比較多字符串中是否存在相同的字符串;
  • equalsAnyIgnoreCase(final CharSequence string, final CharSequence...searchStrings):忽略大小寫(xiě)是否存在相同字符

字符串的比較代碼示例

StringUtils.equals("abc", null)  = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
tringUtils.equalsIgnoreCase("abc", "ABC") = true
StringUtils.compare("abc", "abc") = 0
StringUtils.compare("a", "b")     > 0
StringUtils.compare("b", "a")     < 0
StringUtils.compare("a", "B")     < 0
StringUtils.compare("ab", "abc")  < 0
StringUtils.compareIgnoreCase("a", "B")     < 0
StringUtils.compareIgnoreCase("A", "b")     < 0
StringUtils.compareIgnoreCase("ab", "ABC")  < 0
StringUtils.equalsAny("abc", "abc", "def") = true
StringUtils.equalsAny("abc", "ABC", "DEF") = false
StringUtils.equalsAnyIgnoreCase("abc", "abc", "def") = true
StringUtils.equalsAnyIgnoreCase("abc", "ABC", "DEF") = true

1.7.字符串的查找

  • indexOf(final CharSequence seq, final int searchChar):查找指定字符在字符串中首次出現(xiàn)的位置的索引值;
  • indexOf(final CharSequence seq, final int searchChar, final int startPos):從指定位置final int startPos開(kāi)始查找;
  • indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr):忽略大小寫(xiě)的查找字符串首次出現(xiàn)位置
  • indexOfIgnoreCase(final CharSequence str, final CharSequence searchStr, int startPos):同``indexOf`類(lèi)似;
  • lastIndexOf(final CharSequence seq, final int searchChar):從尾部開(kāi)始查找;
  • lastIndexOf(final CharSequence seq, final int searchChar, final int startPos):同理從尾部開(kāi)始查找指定位置前的字符

字符串的查找示例代碼

StringUtils.indexOf("aabaabaa", 'b') = 2
StringUtils.indexOf("aabaabaa", "")   = 0
StringUtils.indexOf("aabaabaa", "b", 3)  = 5
StringUtils.ordinalIndexOf("abababab", "abab", 3) = 4
StringUtils.lastIndexOf("aabaabaa", 'b') = 5
StringUtils.lastIndexOf("aabaabaa", 'a', 0)  = 0

1.8.是否包含字符串

  • contains(final CharSequence seq, final int searchChar:是否包含指定字符串;
  • containsIgnoreCase(final CharSequence str, final CharSequence searchStr:忽略大小寫(xiě)下檢查是否包含指定字符串
  • containsWhitespace(final CharSequence seq):是否包含空白字符串;
  • containsAny(final CharSequence cs, final char... searchChars):判斷字符竄是否包含后面多個(gè)中的任意一個(gè);
  • containsOnly(final CharSequence cs, final char... valid):判斷前面的字符是否全部是后面的字符中的;
  • containsNone(final CharSequence cs, final char... searchChars):判斷前面字符是否不含其后字符的任意一個(gè)字符

是否包含字符串示例代碼

StringUtils.contains("abc", 'a') = true
StringUtils.contains("abc", 'z') = false
StringUtils.containsIgnoreCase("abc", "A") = true
StringUtils.containsIgnoreCase("abc", "Z") = false
StringUtils.containsWhitespace("abc")      = false
StringUtils.containsWhitespace("a  bc")    = true
StringUtils.containsAny("zzabyycdxx",['z','a']) = true
StringUtils.containsAny("zzabyycdxx",['b','y']) = true
StringUtils.containsAny("zzabyycdxx",['z','y']) = true
StringUtils.containsAny("aba", ['z'])           = false
StringUtils.containsOnly("abab", 'abc') = true
StringUtils.containsOnly("ab1", 'abc')  = false
StringUtils.containsOnly("abz", 'abc')  = false
StringUtils.containsNone("abab", 'xyz') = true
StringUtils.containsNone("ab1", 'xyz')  = true
StringUtils.containsNone("abz", 'xyz')  = false

1.9.截取字符串

  • substring(final String str, int start):指定開(kāi)始為止截取字符串;
  • substring(final String str, int start):指定開(kāi)始和結(jié)束為止截取字符串;
  • left(final String str, final int len):得到一個(gè)字符串最左邊的len個(gè)字符;
  • right(final String str, final int len):得到一個(gè)字符串最右邊的len個(gè)字符;
  • mid(final String str, int pos, final int len):得到中間的指定區(qū)域的字符,是左包含;
  • substringBefore(final String str, final String separator):得到一個(gè)字符串中第一個(gè)分割符之前的字符串;
  • substringAfter(final String str, final String separator):同理,得到一個(gè)字符串第一個(gè)分割符之后的字符串;

截取字符串示例代碼

StringUtils.substring("abc", 2)  = "c"
StringUtils.substring("abc", 4)  = ""
StringUtils.substring("abc", -2) = "bc"
StringUtils.substring("abc", -4) = "abc"
StringUtils.substring("abc", 2, 2)   = ""
StringUtils.substring("abc", -2, -1) = "b"
StringUtils.substring("abc", -4, 2)  = "ab"
StringUtils.left("abc", 2)   = "ab"
StringUtils.left("abc", 4)   = "abc"
StringUtils.right("abc", 2)   = "bc"
StringUtils.right("abc", 4)   = "abc"
StringUtils.mid("abc", 2, 4)   = "c"
StringUtils.mid("abc", 4, 2)   = ""
StringUtils.mid("abc", -2, 2)  = "ab"
StringUtils.substringBefore("abcba", "b") = "a"
StringUtils.substringBefore("abc", "c")   = "ab"
StringUtils.substringBefore("abc", "d")   = "abc"
StringUtils.substringAfter("abcba", "b") = "cba"
StringUtils.substringAfter("abc", "c")   = ""
StringUtils.substringAfter("abc", "d")   = ""

1.10.字符串分割

  • String[] split(final String str):按照空格分割字符串,返回?cái)?shù)組;
  • String[] split(final String str, final char separatorChar):指定分割符分割字符串;
  • String[] split(final String str, final String separatorChars, final int max):指定分割符,指定最大分割的數(shù)組大小;
  • String[] splitByCharacterTypeCamelCase(final String str):根據(jù)字符串類(lèi)型分割字符串;

字符串分割示例代碼

StringUtils.split("abc  def") = ["abc", "def"]
StringUtils.split(" abc ")    = ["abc"]
StringUtils.split("a..b.c", '.')   = ["a", "b", "c"]
StringUtils.split("a:b:c", '.')    = ["a:b:c"]
StringUtils.split("a b c", ' ')    = ["a", "b", "c"]
StringUtils.split("ab:cd:ef", ":", 3); = [ab, cd, ef]
StringUtils.split("ab:cd:ef", ":", 2); = [ab:cd:ef]
StringUtils.split("ab:cd:ef", ":", 1); = [ab, cd:ef]
StringUtils.splitByCharacterTypeCamelCase("number5")    = ["number", "5"]
StringUtils.splitByCharacterTypeCamelCase("fooBar")     = ["foo", "Bar"]
StringUtils.splitByCharacterTypeCamelCase("foo200Bar")  = ["foo", "200", "Bar"]
StringUtils.splitByCharacterTypeCamelCase("ASFRules")   = ["ASF", "Rules"]

1.11.字符串連接(數(shù)組轉(zhuǎn)字符)

  • join(final T... elements);普通的連接字符串
  • join(final Object[] array, final char separator):指定連接符,連接字符串;

字符串連接示例代碼

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

1.12.刪除和替換字符串

  • removeStart(final String str, final String remove):刪除字符串中的指定的前綴字符串;
  • removeStartIgnoreCase(final String str, final String remove):同removeStart類(lèi)似,只是忽略的大小寫(xiě);
  • removeEnd(final String str, final String remove):同removeStart相反;
  • deleteWhitespace(final String str):刪除字符串中的空格;
  • remove(final String str, final String remove):從字符串中移除指定字符串;
  • removeAll(final String text, final String regex):移除符合正則表達(dá)式的所有字符串;
  • replaceOnce(final String text, final String searchString, final String replacement):將字符串中指定字符替換一個(gè);
  • replaceAll(final String text, final String regex, final String replacement):將字符串中指定字符替換所有;

刪除和替換字符串示例代碼

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"
StringUtils.deleteWhitespace("abc")        = "abc"
StringUtils.deleteWhitespace("   ab  c  ") = "abc"
StringUtils.removeEnd("www.domain.com", ".com.")  = "www.domain.com"
StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
StringUtils.removeEnd("www.domain.com", "domain") = "www.domain.com"
StringUtils.remove("queued", "ue") = "qd"
StringUtils.remove("queued", "zz") = "queued"
StringUtils.removeAll("any", ".*")  = ""
StringUtils.removeAll("any", ".+")  = ""
StringUtils.removeAll("abc", ".?")  = ""
StringUtils.removeAll("A&lt;__&gt;\n&lt;__&gt;B", "&lt;.*&gt;")      = "A\nB"
StringUtils.removeAll("A&lt;__&gt;\n&lt;__&gt;B", "(?s)&lt;.*&gt;")  = "AB"
StringUtils.removeAll("ABCabc123abc", "[a-z]")     = "ABC123"
StringUtils.replaceOnce("aba", "a", null)  = "aba"
StringUtils.replaceOnce("aba", "a", "")    = "ba"
StringUtils.replaceOnce("aba", "a", "z")   = "zba"
StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "_")  = "ABC_123"
StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "")   = "ABC123"
StringUtils.replaceAll("abc", "", "ZZ")  = "ZZaZZbZZcZZ"

1.13.重復(fù)字符串

  • repeat(final String str, final int repeat):生成指定重復(fù)次數(shù)的重復(fù)字符串;

重復(fù)字符串生成示例代碼

StringUtils.repeat("a", 3)  = "aaa"
StringUtils.repeat("ab", 2) = "abab"
StringUtils.repeat("a", -2) = ""

1.14.字符串出現(xiàn)次數(shù)

  • countMatches(final CharSequence str, final CharSequence sub):獲取指定字符串在原字符串中出現(xiàn)的次數(shù);

字符串出現(xiàn)次數(shù)示例代碼

StringUtils.countMatches("abba", "a")   = 2
StringUtils.countMatches("abba", "ab")  = 1

二、StringUtils其他常用方法

2.1.判斷是否是空格或者數(shù)字

  • isNumericSpace(final CharSequence cs)
StringUtils.isNumericSpace("12 3") = true
StringUtils.isNumericSpace("12.3") = false

2.2.判斷是否是空格

  • isWhitespace(final CharSequence cs)
StringUtils.isWhitespace("")     = true
StringUtils.isWhitespace("  ")   = true
StringUtils.isWhitespace("abc")  = false

2.3.判斷是否全是小寫(xiě)

  • isAllLowerCase(final CharSequence cs)
StringUtils.isAllLowerCase("abc")  = true
StringUtils.isAllLowerCase("abC")  = false

2.4.判斷是否全是大寫(xiě)

  • isAllUpperCase(final CharSequence cs)
StringUtils.isAllUpperCase("ABC")  = true
StringUtils.isAllUpperCase("aBC")  = false

2.5.反轉(zhuǎn)字符串

  • reverse(final String str)
StringUtils.reverse("bat") = "tab"

2.6.字符串顯示省略號(hào)

  • abbreviate(final String str, final int maxWidth)
StringUtils.abbreviate("abcdefg", 6) = "abc..."
StringUtils.abbreviate("abcdefg", 7) = "abcdefg"
StringUtils.abbreviate("abcdefg", 8) = "abcdefg"
StringUtils.abbreviate("abcdefg", 4) = "a..."

2.7.判斷字符串是否以什么開(kāi)頭

  • startsWith(final CharSequence str, final CharSequence prefix)
StringUtils.startsWith("abcdef", null)  = false
StringUtils.startsWith("abcdef", "abc") = true
StringUtils.startsWith("ABCDEF", "abc") = false

2.7.判斷字符串是否以什么結(jié)尾

  • endsWith(final CharSequence str, final CharSequence suffix)
StringUtils.endsWith("ABCDEF", "def") = false
StringUtils.endsWith("ABCDEF", "cde") = false
StringUtils.endsWith("ABCDEF", "")    = true
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語(yǔ)言,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等;大學(xué)畢...
    oceanfive閱讀 3,377評(píng)論 0 7
  • 作者:米奇歡兒 微信:577013201 今天我要說(shuō)的是做頭頭,我說(shuō)的頭頭很簡(jiǎn)單,就是一群人中你很占分量,你...
    __僅念閱讀 369評(píng)論 0 0
  • 渭風(fēng)閱讀 164評(píng)論 0 0
  • 昨晚,兒子的家庭作業(yè):縫制沙包。吃完晚飯,我開(kāi)始找布,針線還有小米。準(zhǔn)備好一切后,我開(kāi)始手工縫制。大腦...
    梅花綻放閱讀 441評(píng)論 0 1
  • 一個(gè)良好的習(xí)慣需要長(zhǎng)時(shí)間的堅(jiān)持,持之以恒的做下去,不會(huì)被其他的任何事情所放棄,良好的習(xí)慣需要一直堅(jiān)持下去,...
    Ai文Wen閱讀 87評(píng)論 0 1

友情鏈接更多精彩內(nèi)容