StringUtils类API及使用方法详解

StringUtils类API及使用方法详解

StringUtils方法概览

判空函数

1)StringUtils.isEmpty(String str)css

2)StringUtils.isNotEmpty(String str)java

3)StringUtils.isBlank(String str)api

4)StringUtils.isNotBlank(String str)数组

5)StringUtils.isAnyBlank(CharSequence… css)app

6)StringUtils.isAnyEmpty(CharSequence… css)dom

7)StringUtils.isNoneBlank(CharSequence… css)函数

8)StringUtils.isNoneEmpty(CharSequence… css)ui

9)StringUtils.isWhitespace(CharSequence cs)spa

  • isNotEmpty = !isEmpty, isBlank同理;
  • 容易忽略的;
    StringUtils.isEmpty("") = true
  • isBlank和isEmpty区别:
    1.  
      System .out.println(StringUtils.isBlank(" "));//true
    2.  
       
    3.  
      System .out.println(StringUtils.isBlank(" "));//true
    4.  
       
    5.  
      System .out.println(StringUtils.isBlank("\n\t"));//true
    6.  
      //区别
    7.  
      StringUtils .isEmpty(" ") = false
  • isAnyBlank和isAnyEmpty是多维判空,存在一个blank或者empty既true
    1.  
      StringUtils .isAnyBlank("", "bar","foo"); = true
    2.  
      //注意这两个区别
    3.  
      StringUtils .isAnyEmpty(" ", "bar") = false
    4.  
      StringUtils .isAnyEmpty(" ", "bar") = true
  • isNoneBlank = !isAnyBlank;isNoneEmpty同理
    1.  
      public static boolean isNoneBlank(CharSequence... css) {
    2.  
      return !isAnyBlank(css);
    3.  
      }
  • isWhitespace判断空白
    1.  
      StringUtils .isWhitespace(null) = false
    2.  
      StringUtils .isWhitespace("") = true
    3.  
      StringUtils .isWhitespace(" ") = true

大小写函数

StringUtils.capitalize(String str)code

StringUtils.uncapitalize(String str)

StringUtils.upperCase(String str)

StringUtils.upperCase(String str,Locale locale)

StringUtils.lowerCase(String str)

StringUtils.lowerCase(String str,Locale locale)

StringUtils.swapCase(String str)

StringUtils.isAllUpperCase(CharSequence cs)

StringUtils.isAllLowerCase(CharSequence cs)

注意点:

  • capitalize首字母大写,upperCase所有转化为大写,swapCase大小写互转;
    1.  
      StringUtils .capitalize(null) = null
    2.  
       
    3.  
      StringUtils .capitalize("") = ""
    4.  
       
    5.  
      //首字母转为大写
    6.  
      StringUtils .capitalize("cat") = "Cat"
    7.  
       
    8.  
      //所有转为大写
    9.  
      StringUtils .upperCase("aBc") = "ABC"
    10.  
       
    11.  
      //大小写互转
    12.  
      StringUtils .swapCase("The dog has a BONE") = "tHE DOG HAS A bone"
  • isAllUpperCase是否所有大写,isAllLowerCase是否所有小写
    1.  
      StringUtils .isAllLowerCase(" ") = false
    2.  
       
    3.  
      StringUtils .isAllLowerCase("abc") = true
    4.  
       
    5.  
      StringUtils .isAllLowerCase("abC") = false
    6.  
       
    7.  
      StringUtils .isAllLowerCase("ab c") = false
    8.  
       
    9.  
      StringUtils .isAllLowerCase("ab1c") = false
    10.  
       
    11.  
      StringUtils .isAllLowerCase("ab/c") = false

删除函数

StringUtils.remove(String str, char remove)

StringUtils.remove(String str, String remove)

StringUtils.removeEnd(String str, String remove)

StringUtils.removeEndIgnoreCase(String str, String remove)

StringUtils.removePattern(String source, String regex)

StringUtils.removeStart(String str, String remove)

StringUtils.removeStartIgnoreCase(String str, String remove)

StringUtils.deleteWhitespace(String str)

  • 具体例子
    1.  
      //删除字符
    2.  
      StringUtils .remove("queued", 'u') = "qeed"
    3.  
       
    4.  
      //删除字符串
    5.  
      StringUtils .remove("queued", "ue") = "qd"
    6.  
       
    7.  
      //删除结尾匹配的字符串
    8.  
      StringUtils .removeEnd("www.domain.com", ".com") = "www.domain"
    9.  
       
    10.  
      //删除结尾匹配的字符串,找都不到返回原字符串
    11.  
      StringUtils .removeEnd("www.domain.com", "domain") = "www.domain.com"
    12.  
       
    13.  
      //忽略大小写的
    14.  
      StringUtils .removeEndIgnoreCase("www.domain.com", ".COM") = "www.domain")
    15.  
       
    16.  
      //删除全部空白(好用)
    17.  
      StringUtils .deleteWhitespace("abc") = "abc"
    18.  
      StringUtils .deleteWhitespace(" ab c ") = "abc"

替换函数

replace(String text, String searchString, String replacement)

replace(String text, String searchString, String replacement, int max)

replaceChars(String str, char searchChar, char replaceChar)

replaceChars(String str, String searchChars, String replaceChars)

replaceEach(String text, String[] searchList, String[] replacementList)

replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)

replaceOnce(String text, String searchString, String replacement)

replacePattern(String source, String regex, String replacement)

overlay(String str,String overlay,int start,int end)

  • 例子
    1.  
      StringUtils .replace("aba", "a", "") = "b"
    2.  
      StringUtils .replace("aba", "a", "z") = "zbz"
    3.  
       
    4.  
      //数字就是替换个数,0表明不替换,1表明从开始数起第一个,-1表明所有替换
    5.  
      StringUtils .replace("abaa", "a", "", -1) = "b"
    6.  
      StringUtils .replace("abaa", "a", "z", 0) = "abaa"
    7.  
      StringUtils .replace("abaa", "a", "z", 1) = "zbaa"
    8.  
      StringUtils .replace("abaa", "a", "z", 2) = "zbza"
    9.  
      StringUtils .replace("abaa", "a", "z", -1) = "zbzz"
  • replaceEach是replace的加强版,搜索列表和替换长度必须一致,不然报IllegalArgumentException异常:
    1.  
      StringUtils .replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"}) = "wcte"
    2.  
      StringUtils .replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"d", "t"}) = "dcte"
    3.  
      StringUtils .replaceChars("dabcba", "bcd", "yzx") = "xayzya"
    4.  
      StringUtils .replaceChars("abcba", "bc", "y") = "ayya"

史上最详尽的Land3 StringUtils类使用方法大全1

replaceChars原理图
  • replaceOnce只替换一次:
    1.  
      StringUtils .replaceOnce("aba", "a", "") = "ba"
    2.  
      StringUtils .replaceOnce("aba", "a", "z") = "zba"
    3.  
      StringUtils .replaceEachRepeatedly("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"}) = "wcte"
    4.  
      //这是一个很是奇怪的函数,原本本身料想结果应该是“dcte”的,但是结果竟然是tcte,而dcte再替换一次就是tcte了。
    5.  
      StringUtils .replaceEachRepeatedly("abcde", new String[]{"ab", "d"}, new String[]{"d", "t"}) = "tcte"
  1.  
    StringUtils .overlay("abcdef", "zzzz", 2, 4) = "abzzzzef"
  2.  
    StringUtils .overlay("abcdef", "zzzz", 4, 2) = "abzzzzef"
  3.  
    StringUtils .overlay("abcdef", "zzzz", -1, 4) = "zzzzef"
  4.  
    StringUtils .overlay("abcdef", "zzzz", 2, 8) = "abzzzz"
  5.  
    StringUtils .overlay("abcdef", "zzzz", -2, -3) = "zzzzabcdef"
  6.  
    StringUtils .overlay("abcdef", "zzzz", 8, 10) = "abcdefzzzz"

反转函数

reverse(String str)

reverseDelimited(String str, char separatorChar)

例:

  1.  
    StringUtils .reverse("bat") = "tab"
  2.  
    StringUtils .reverseDelimited("a.b.c", 'x') = "a.b.c"
  3.  
    StringUtils .reverseDelimited("a.b.c", ".") = "c.b.a"

分隔合并函数

split(String str)

split(String str, char separatorChar)

split(String str, String separatorChars)

split(String str, String separatorChars, int max)

splitByCharacterType(String str)

splitByCharacterTypeCamelCase(String str)

splitByWholeSeparator(String str, String separator)

splitByWholeSeparator(String str, String separator, int max)

splitByWholeSeparatorPreserveAllTokens(String str, String separator)

splitByWholeSeparatorPreserveAllTokens(String str, String separator, int max)

splitPreserveAllTokens(String str)

splitPreserveAllTokens(String str, char separatorChar)

splitPreserveAllTokens(String str, String separatorChars)

splitPreserveAllTokens(String str, String separatorChars, int max)

例:

  1.  
    //用空白符作空格
  2.  
    StringUtils .split("abc def") = ["abc", "def"]
  3.  
     
  4.  
    StringUtils .split("abc def") = ["abc", "def"]
  5.  
     
  6.  
    StringUtils .split("a..b.c", '.') = ["a", "b", "c"]
  7.  
    //用字符分割
  8.  
    StringUtils .split("a:b:c", '.') = ["a:b:c"]
  9.  
    //0 或者负数表明没有限制
  10.  
    StringUtils .split("ab:cd:ef", ":", 0) = ["ab", "cd", "ef"]
  11.  
    //分割字符串 ,能够设定获得数组的长度,限定为2
  12.  
    StringUtils .split("ab:cd:ef", ":", 2) = ["ab", "cd:ef"]
  13.  
    //null也能够做为分隔
  14.  
    StringUtils .splitByWholeSeparator("ab de fg", null) = ["ab", "de", "fg"]
  15.  
    StringUtils .splitByWholeSeparator("ab de fg", null) = ["ab", "de", "fg"]
  16.  
    StringUtils .splitByWholeSeparator("ab:cd:ef", ":") = ["ab", "cd", "ef"]
  17.  
    StringUtils .splitByWholeSeparator("ab-!-cd-!-ef", "-!-") = ["ab", "cd", "ef"]
  18.  
    //带有限定长度的分隔
  19.  
    StringUtils .splitByWholeSeparator("ab:cd:ef", ":", 2) = ["ab", "cd:ef"]

join(byte[] array,char separator)

join(Object[] array,char separator)等方法

join(Object[] array,char separator,int startIndex,int endIndex)

例:

  1.  
    //只有一个参数的join,简单合并在一块儿
  2.  
    StringUtils .join(["a", "b", "c"]) = "abc"
  3.  
    StringUtils .join([null, "", "a"]) = "a"
  4.  
    //null的话,就是把字符合并在一块儿
  5.  
    StringUtils .join(["a", "b", "c"], null) = "abc"
  6.  
    //从index为0到3合并,注意是排除3的
  7.  
    StringUtils .join([null, "", "a"], ',', 0, 3) = ",,a"
  8.  
    StringUtils .join(["a", "b", "c"], "--", 0, 3) = "a--b--c"
  9.  
    //从index为1到3合并,注意是排除3的
  10.  
    StringUtils .join(["a", "b", "c"], "--", 1, 3) = "b--c"
  11.  
    StringUtils .join(["a", "b", "c"], "--", 2, 3) = "c"

截取函数

substring(String str,int start)

substringAfter(String str,String separator)

substringBeforeLast(String str,String separator)

substringAfterLast(String str,String separator)

substringBetween(String str,String tag)

  1.  
    StringUtils .substring("abcdefg", 0) = "abcdefg"
  2.  
    StringUtils .substring("abcdefg", 2) = "cdefg"
  3.  
    StringUtils .substring("abcdefg", 4) = "efg"
  4.  
    //start>0表示从左向右, start<0表示从右向左, start=0则从左第一位开始
  5.  
    StringUtils .substring("abcdefg", -2) = "fg"
  6.  
    StringUtils .substring("abcdefg", -4) = "defg"
  7.  
     
  8.  
    //从第二个参数字符串开始截取,排除第二个字符串
  9.  
    StringUtils .substringAfter("abc", "a") = "bc"
  10.  
    StringUtils .substringAfter("abcba", "b") = "cba"
  11.  
    StringUtils .substringAfter("abc", "c") = ""
  12.  
     
  13.  
    //从最后一个字母出现开始截取
  14.  
    StringUtils .substringBeforeLast("abcba", "b") = "abc"
  15.  
    StringUtils .substringBeforeLast("abc", "c") = "ab"
  16.  
    StringUtils .substringBeforeLast("a", "a") = ""
  17.  
    StringUtils .substringBeforeLast("a", "z") = "a"
  18.  
     
  19.  
     
  20.  
    StringUtils .substringAfterLast("abc", "a") = "bc"
  21.  
    StringUtils .substringAfterLast("abcba", "b") = "a"
  22.  
    StringUtils .substringAfterLast("abc", "c") = ""
  23.  
     
  24.  
    StringUtils .substringBetween("tagabctag", null) = null
  25.  
    StringUtils .substringBetween("tagabctag", "") = ""
  26.  
    StringUtils .substringBetween("tagabctag", "tag") = "abc"

截取分析图:

史上最详尽的Land3 StringUtils类使用方法大全2

截取分析图
  1.  
    // start>0&&end>0从左开始(包括左)到右结束(不包括右),
  2.  
    //start<0&&end<0从右开始(包括右),再向左数到end结束(包括end)
  3.  
    StringUtils .substring("abc", -2, -1) = "b"
  4.  
    //这个我至今还没弄明白
  5.  
    StringUtils .substring("abc", -4, 2) = "ab"

类似度函数

一个字符串能够经过增长一个字符,删除一个字符,替换一个字符获得另一个字符串,假设,咱们把从字符串A转换成字符串B,前面3种操做所执行的最少次数称为AB类似度.

getLevenshteinDistance(CharSequence s, CharSequence t)
getLevenshteinDistance(CharSequence s, CharSequence t, int threshold)
StringUtils.getLevenshteinDistance(“elephant”, “hippo”) = 7
StringUtils.getLevenshteinDistance(“hippo”, “elephant”) = 7

例:
//b替换为d
abc adc 度为 1
//ababababa去掉a,末尾加b
ababababa babababab 度为 2
abcd acdb 度为2

差别函数

difference(String str1,String str2)

  1.  
    //在str1中寻找str2中没有的的字符串,并返回
  2.  
    StringUtils .difference("", "abc") = "abc"
  3.  
    StringUtils .difference("abc", "") = ""
  4.  
    StringUtils .difference("abc", "abc") = ""
  5.  
    StringUtils .difference("abc", "ab") = ""
  6.  
    StringUtils .difference("ab", "abxyz") = "xyz"
  7.  
    StringUtils .difference("abcde", "abxyz") = "xyz"
  8.  
    StringUtils .difference("abcde", "xyz") = "xyz"

图片理解:

史上最详尽的Land3 StringUtils类使用方法大全3

差别图片

缩短省略函数

abbreviate(String str, int maxWidth)

abbreviate(String str, int offset, int maxWidth)

abbreviateMiddle(String str, String middle, int length)

注意:

  • 字符串的长度小于或等于最大长度,返回该字符串。
  • 运算规律(substring(str, 0, max-3) + “…”)
  • 若是最大长度小于4,则抛出异常。
    1.  
      //(substring(str, 0, 6-3) + "...")
    2.  
      StringUtils .abbreviate("abcdefg", 6) = "abc..."
    3.  
      StringUtils .abbreviate("abcdefg", 7) = "abcdefg"
    4.  
      StringUtils .abbreviate("abcdefg", 8) = "abcdefg"
    5.  
      StringUtils .abbreviate("abcdefg", 4) = "a..."
    6.  
      StringUtils .abbreviate("abcdefg", 3) = IllegalArgumentException

匹配计数函数

countMatches(CharSequence str,char ch)

  1.  
    StringUtils .countMatches("abba", 0) = 0
  2.  
    StringUtils .countMatches("abba", 'a') = 2
  3.  
    StringUtils .countMatches("abba", 'b') = 2
  4.  
    StringUtils .countMatches("abba", 'x') = 0

删除空白函数

trim(String str)

trimToEmpty(String str)

trimToNull(String str)

deleteWhitespace(String str)

  1.  
    StringUtils .trim(" ") = ""
  2.  
    StringUtils .trim("abc") = "abc"
  3.  
    StringUtils .trim(" abc ") = "abc"
  4.  
    //空的话,返回null
  5.  
    StringUtils .trimToNull(" ") = null
  6.  
    StringUtils .trimToNull("abc") = "abc"
  7.  
    StringUtils .trimToNull(" abc ") = "abc"
  8.  
    StringUtils .trimToEmpty(" ") = ""
  9.  
    StringUtils .trimToEmpty("abc") = "abc"
  10.  
    StringUtils .trimToEmpty(" abc ") = "abc"

-注意这二者的区别。

  1.  
    StringUtils .deleteWhitespace("") = ""
  2.  
    StringUtils .deleteWhitespace("abc") = "abc"
  3.  
    StringUtils .deleteWhitespace(" ab c ") = "abc"

判断是否相等函数

equals(CharSequence cs1,CharSequence cs2)

equalsIgnoreCase(CharSequence str1, CharSequence str2)

  1.  
    StringUtils .equals("abc", null) = false
  2.  
    StringUtils .equals("abc", "abc") = true
  3.  
    StringUtils .equals("abc", "ABC") = false
  4.  
    //忽略大小写
  5.  
    StringUtils .equalsIgnoreCase("abc", null) = false
  6.  
    StringUtils .equalsIgnoreCase("abc", "abc") = true
  7.  
    StringUtils .equalsIgnoreCase("abc", "ABC") = true

默认字符函数

defaultString(String str)

defaultString(String str,String defaultStr)

  1.  
    StringUtils .defaultString("") = ""
  2.  
    StringUtils .defaultString("bat") = "bat"
  3.  
    StringUtils .defaultString("", "NULL") = ""
  4.  
    //若是第一个参数为空,这返回第二个默认参数
  5.  
    StringUtils .defaultString("bat", "NULL") = "bat"

填充居中函数

leftPad/rightPad(String str,int size)

leftPad(String str,int size,char padChar)

center(String str,int size)

center(String str,int size,char padChar)

repeat(char ch,int repeat)

repeat(String str,String separator,int repeat)

appendIfMissing(String str, CharSequence suffix, CharSequence… suffixes)

appendIfMissing(String str,CharSequence suffix,CharSequence… suffixes)

  1.  
    StringUtils .leftPad("bat", 3) = "bat"
  2.  
    //左填充,默认填充空
  3.  
    StringUtils .leftPad("bat", 5) = " bat"
  4.  
    StringUtils .leftPad("bat", 1) = "bat"
  5.  
    StringUtils .leftPad("bat", -1) = "bat"
  6.  
    //左填充,填充字符为z
  7.  
    StringUtils .leftPad("bat", 3, 'z') = "bat"
  8.  
    StringUtils .leftPad("bat", 5, 'z') = "zzbat"
  9.  
    StringUtils .leftPad("bat", 1, 'z') = "bat"
  10.  
    StringUtils .leftPad("bat", -1, 'z') = "bat"
  11.  
    //居中
  12.  
    StringUtils .center("ab", -1) = "ab"
  13.  
    StringUtils .center("ab", 4) = " ab "
  14.  
    StringUtils .center("abcd", 2) = "abcd"
  15.  
    StringUtils .center("a", 4) = " a
  16.  
    //居中,最后一个参数是填充字符或字符串
  17.  
    StringUtils .center("abcd", 2, ' ') = "abcd"
  18.  
    StringUtils .center("a", 4, ' ') = " a "
  19.  
    StringUtils .center("a", 4, 'y') = "yayy"
  20.  
    //重复字符串,第二个参数是重复次数
  21.  
    StringUtils .repeat("a", 3) = "aaa"
  22.  
    StringUtils .repeat("ab", 2) = "abab"
  23.  
    StringUtils .repeat("a", -2) = ""
  24.  
    //重复字符串,第二个参数是分割符,第三个参数是重复次数
  25.  
    StringUtils .repeat("", "x", 3) = "xxx"
  26.  
    StringUtils .repeat("?", ", ", 3) = "?, ?, ?"
  27.  
     
  28.  
    //
  29.  
    StringUtils .appendIfMissing("abcxyz", "xyz", "mno") = "abcxyz"
  30.  
    StringUtils .appendIfMissing("abcmno", "xyz", "mno") = "abcmno"
  31.  
    StringUtils .appendIfMissing("abcXYZ", "xyz", "mno") = "abcXYZxyz"
  32.  
    StringUtils .appendIfMissing("abcMNO", "xyz", "mno") = "abcMNOxyz"

是否包含函数

containsOnly(CharSequence cs,char… valid)

containsNone(CharSequence cs,char… searchChars)

startsWith(CharSequence str,CharSequence prefix)

startsWithIgnoreCase(CharSequence str,CharSequence prefix)

startsWithAny(CharSequence string,CharSequence… searchStrings)

  • 例子
    1.  
      //判断字符串中全部字符,是否都是出自参数2中
    2.  
      StringUtils .containsOnly("ab", "") = false
    3.  
      StringUtils .containsOnly("abab", "abc") = true
    4.  
      StringUtils .containsOnly("ab1", "abc") = false
    5.  
      StringUtils .containsOnly("abz", "abc") = false
    6.  
       
    7.  
      //判断字符串中全部字符,都不在参数2中。
    8.  
      StringUtils .containsNone("abab", 'xyz') = true
    9.  
      StringUtils .containsNone("ab1", 'xyz') = true
    10.  
      StringUtils .containsNone("abz", 'xyz') = false
    11.  
       
    12.  
      //判断字符串是否以第二个参数开始
    13.  
      StringUtils .startsWith("abcdef", "abc") = true
    14.  
      StringUtils .startsWith("ABCDEF", "abc") = false

索引下标函数

indexOf(CharSequence seq,CharSequence searchSeq)

indexOf(CharSequence seq,CharSequence searchSeq,int startPos)

indexOfIgnoreCase/lastIndexOfIgnoreCase(CharSequence str,CharSequence searchStr)

lastIndexOf(CharSequence seq,int searchChar)

    1.  
      //返回第二个参数开始出现的索引值
    2.  
      StringUtils .indexOf("aabaabaa", "a") = 0
    3.  
      StringUtils .indexOf("aabaabaa", "b") = 2
    4.  
      StringUtils .indexOf("aabaabaa", "ab") = 1
    5.  
       
    6.  
      //从第三个参数索引开始找起,返回第二个参数开始出现的索引值
    7.  
      StringUtils .indexOf("aabaabaa", "a", 0) = 0
    8.  
      StringUtils .indexOf("aabaabaa", "b", 0) = 2
    9.  
      StringUtils .indexOf("aabaabaa", "ab", 0) = 1
    10.  
      StringUtils .indexOf("aabaabaa", "b", 3) = 5
    11.  
      StringUtils .indexOf("aabaabaa", "b", 9) = -1
    12.  
      //返回第二个参数出现的最后一个索引值
    13.  
      StringUtils .lastIndexOf("aabaabaa", 'a') = 7
    14.  
      StringUtils .lastIndexOf("aabaabaa", 'b') = 5
    15.  
       
    16.  
      StringUtils .lastIndexOfIgnoreCase("aabaabaa", "A", 8) = 7
    17.  
      StringUtils .lastIndexOfIgnoreCase("aabaabaa", "B", 8) = 5
    18.  
      StringUtils .lastIndexOfIgnoreCase("aabaabaa", "AB", 8) = 4
    19.  
      StringUtils .lastIndexOfIgnoreCase("aabaabaa", "B", 9) = 5
相关文章
相关标签/搜索