Class StringTools

java.lang.Object
org.apache.commons.lang3.StringUtils
com.luna.common.text.StringTools

public class StringTools extends org.apache.commons.lang3.StringUtils
Author:
luna 2021/8/18
  • Field Summary

    Fields inherited from class org.apache.commons.lang3.StringUtils

    CR, EMPTY, INDEX_NOT_FOUND, LF, SPACE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static String[]
    Append the given String to the given String array, returning a new array consisting of the input array contents plus the given String.
    static String
    applyRelativePath(String path, String relativePath)
    Apply the given relative path to the given Java resource path, assuming standard Java folder separation (i.e.
    static String
    Convert a String array into a comma delimited String (i.e., CSV).
    static String
    Convert a String array into a delimited String (e.g.
    static String
    Capitalize a String, changing the first letter to upper case as per Character.toUpperCase(char).
    static String
    清理空白字符
    static String
    Normalize the path by suppressing sequences like "path/.." and inner simple dots.
    static String
    Convert a Collection into a delimited String (e.g., CSV).
    static String
    Convert a Collection into a delimited String (e.g.
    static String
    collectionToDelimitedString(Collection<?> coll, String delim, String prefix, String suffix)
    Convert a Collection to a delimited String (e.g.
    static Set<String>
    Convert a comma delimited list (e.g., a row from a CSV file) into a set.
    static String[]
    将以逗号分隔的列表(例如,CSV文件中的一行)转换为字符串数组。 Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.
    static String[]
    concatenateStringArrays(String[] array1, String[] array2)
    Concatenate the given String arrays into one, with overlapping array elements included twice.
    static boolean
    contains(String str, String[] strArr)
     
    static boolean
    containsAny(CharSequence str, char... testChars)
    查找指定字符串是否包含指定字符列表中的任意一个字符
    static boolean
    查找指定字符串是否包含指定字符串列表中的任意一个字符串
    static boolean
    Check whether the given CharSequence contains any whitespace characters.
    static boolean
    Check whether the given String contains any whitespace characters.
    static int
    Count the occurrences of the substring sub in string str.
    static String
    delete(String inString, String pattern)
    Delete all occurrences of the given substring.
    static String
    deleteAny(String inString, String charsToDelete)
    Delete any character in a given String.
    static String[]
    Take a String that is a delimited list and convert it into a String array.
    static String[]
    delimitedListToStringArray(String str, String delimiter, String charsToDelete)
    Take a String that is a delimited list and convert it into a String array.
    static String
    脱敏,使用默认的脱敏策略
    static boolean
    Test if the given String ends with the specified suffix, ignoring upper/lower case.
    static String
    过滤字符串
    static String
    format(CharSequence template, Object... params)
    格式化文本, {} 表示占位符
    此方法只是简单将占位符 {} 按照顺序替换为参数
    如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
    例:
    通常使用:format("this is {} for {}", "a", "b") =》 this is a for b
    转义{}: format("this is \\{} for {}", "a", "b") =》 this is \{} for a
    转义\: format("this is \\\\{} for {}", "a", "b") =》 this is \a for b
    static String
    format(CharSequence template, String start, String end, Map<?,?> map, boolean ignoreNull)
     
    static String
    format(CharSequence template, String special, Map<?,?> map, boolean ignoreNull)
    格式化文本,使用 'special'{varName} 特殊字符占位
    map = {a: "aValue", b: "bValue"} format("${a} and ${b}", map) ---=》 aValue and bValue
    static String
    format(CharSequence template, Map<?,?> map)
    格式化文本,使用 {varName} 占位
    map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue
    static String
    format(CharSequence template, Map<?,?> map, boolean ignoreNull)
    格式化文本,使用 {varName} 占位
    map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue
    static String
    查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串
    static String
    Extract the filename from the given Java resource path, e.g.
    static String
    Extract the filename extension from the given Java resource path, e.g.
    获得StringReader
    获得StringWriter
    static boolean
    Check that the given CharSequence is neither null nor of length 0.
    static boolean
    Check that the given String is neither null nor of length 0.
    static boolean
    Check whether the given CharSequence contains actual text.
    static boolean
    Check whether the given String contains actual text.
    static String
    hide(CharSequence str, int startInclude, int endExclude)
    替换指定字符串的指定区间内字符为"*" 俗称:脱敏功能,后面其他功能,可以见:DesensitizedUtils(脱敏工具类)
    static int
    indexOf(CharSequence str, CharSequence searchStr, int fromIndex, boolean ignoreCase)
    指定范围内查找字符串
    static boolean
    字符串的每一个字符是否都与定义的匹配器匹配
    static boolean
    是否为数字,支持包括:
    static boolean
    isSubEquals(CharSequence str1, int start1, CharSequence str2, int start2, int length, boolean ignoreCase)
    截取两个字符串的不同部分(长度一致),判断截取的子串是否相同
    任意一个字符串为null返回false
    static String[]
    mergeStringArrays(String[] array1, String[] array2)
    Deprecated.
    as of 4.3.15, in favor of manual merging via LinkedHashSet (with every entry included at most once, even entries within the first array)
    static Locale
    parseLocale(String localeValue)
    Parse the given String value into a Locale, accepting the Locale.toString() format as well as BCP 47 language tags.
    static Locale
    parseLocaleString(String localeString)
    Parse the given String representation into a Locale.
    static TimeZone
    parseTimeZoneString(String timeZoneString)
    Parse the given timeZoneString value into a TimeZone.
    static boolean
    pathEquals(String path1, String path2)
    Compare two paths after normalization of them.
    static String
    Quote the given String with single quotes.
    static Object
    Turn the given Object into a String with single quotes if it is a String; keeping the Object as-is else.
    static String[]
    Remove duplicate strings from the given array.
    static String
    去掉指定后缀
    static String
    replace(CharSequence str, int startInclude, int endExclude, char replacedChar)
    替换指定字符串的指定区间内字符为固定字符
    static String
    replace(CharSequence str, int fromIndex, CharSequence searchStr, CharSequence replacement, boolean ignoreCase)
    替换字符串中的指定字符串
    static String
    replace(CharSequence str, CharSequence searchStr, CharSequence replacement)
    替换字符串中的指定字符串
    static String
    replace(CharSequence str, CharSequence searchStr, CharSequence replacement, boolean ignoreCase)
    替换字符串中的指定字符串
    static String
    replace(CharSequence str, String regex, Func1<Matcher,String> replaceFun)
    替换所有正则匹配的文本,并使用自定义函数决定如何替换
    static String
    replace(CharSequence str, Pattern pattern, Func1<Matcher,String> replaceFun)
    替换所有正则匹配的文本,并使用自定义函数决定如何替换
    replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。
    static String
    replace(String inString, String oldPattern, String newPattern)
    Replace all occurrences of a substring within a string with another string.
    static String
    replaceChars(CharSequence str, char[] chars, CharSequence replacedStr)
    替换字符字符数组中所有的字符为replacedStr
    static String
    replaceChars(CharSequence str, String chars, CharSequence replacedStr)
    替换字符字符数组中所有的字符为replacedStr
    提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在
    static String
    替换字符串中的指定字符串,忽略大小写
    static String[]
    Sort the given String array if necessary.
    static String[]
    split(String toSplit, String delimiter)
    Split a String at the first occurrence of the delimiter.
    static Properties
    取一个字符串数组,并根据给定的定界符分割每个元素。然后,生成一个Properties实例,其中分隔符的左侧提供键,而分隔符的右侧提供值。 Take an array of strings and split each element based on the given delimiter.
    static Properties
    splitArrayElementsIntoProperties(String[] array, String delimiter, String charsToDelete)
    取一个字符串数组,并根据给定的定界符分割每个元素。然后,生成一个Properties实例,其中分隔符的左侧提供键,而分隔符的右侧提供值。 Take an array of strings and split each element based on the given delimiter.
    static boolean
    Test if the given String starts with the specified prefix, ignoring upper/lower case.
    static boolean
    startWith(CharSequence str, char c)
    字符串是否以给定字符开始
    static boolean
    是否以指定字符串开头
    static boolean
    startWith(CharSequence str, CharSequence prefix, boolean ignoreCase)
    是否以指定字符串开头
    如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
    static boolean
    startWith(CharSequence str, CharSequence prefix, boolean ignoreCase, boolean ignoreEquals)
    是否以指定字符串开头
    如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
    static boolean
    给定字符串是否以任何一个字符串开始
    给定字符串和数组为空都返回false
    static boolean
    是否以指定字符串开头,忽略大小写
    static boolean
    是否以指定字符串开头,忽略相等字符串的情况
    static String
    CharSequence 转为字符串,null安全
    static String
    Strip the filename extension from the given Java resource path, e.g.
    static String
    sub(CharSequence str, int fromIndexInclude, int toIndexExclude)
    改进JDK subString
    index从0开始计算,最后一个字符为-1
    如果from和to位置一样,返回 ""
    如果from或to为负数,则按照length从后向前数位置,如果绝对值大于字符串长度,则from归到0,to归到length
    如果经过修正的index中from大于to,则互换from和to example:
    abcdefgh 2 3 =》 c
    abcdefgh 2 -3 =》 cde
    static String
    subPre(CharSequence string, int toIndexExclude)
    切割指定位置之前部分的字符串
    static boolean
    substringMatch(CharSequence str, int index, CharSequence substring)
    Test whether the given string matches the given substring at the given index.
    static String
    subSuf(CharSequence string, int fromIndex)
    切割指定位置之后部分的字符串
    static String[]
    Tokenize the given String into a String array via a StringTokenizer.
    static String[]
    tokenizeToStringArray(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens)
    Tokenize the given String into a String array via a StringTokenizer.
    static String
    Deprecated.
    as of 5.0.4, in favor of Locale.toLanguageTag()
    static String[]
    toLowerCase(String[] strArr)
     
    static String
    数组或集合转String
    static String[]
    Copy the given Collection into a String array.
    static String[]
    Copy the given Enumeration into a String array.
    static String
    Trim all whitespace from the given String: leading, trailing, and in between characters.
    static String[]
    Trim the elements of the given String array, calling String.trim() on each of them.
    static String
    trimLeadingCharacter(String str, char leadingCharacter)
    Trim all occurrences of the supplied leading character from the given String.
    static String
    Trim leading whitespace from the given String.
    static String
    trimTrailingCharacter(String str, char trailingCharacter)
    Trim all occurrences of the supplied trailing character from the given String.
    static String
    Trim trailing whitespace from the given String.
    static String
    Trim leading and trailing whitespace from the given String.
    static String
    Uncapitalize a String, changing the first letter to lower case as per Character.toLowerCase(char).
    static String
    unqualify(String qualifiedName)
    Unqualify a string qualified by a '.' dot character.
    static String
    unqualify(String qualifiedName, char separator)
    Unqualify a string qualified by a separator character.
    static String
    uriDecode(String source, Charset charset)
    Decode the given encoded URI component value.

    Methods inherited from class org.apache.commons.lang3.StringUtils

    abbreviate, abbreviate, abbreviate, abbreviate, abbreviateMiddle, appendIfMissing, appendIfMissingIgnoreCase, center, center, center, chomp, chomp, chop, compare, compare, compareIgnoreCase, compareIgnoreCase, contains, contains, containsAny, containsAnyIgnoreCase, containsIgnoreCase, containsNone, containsNone, containsOnly, containsOnly, countMatches, countMatches, defaultIfBlank, defaultIfEmpty, defaultString, defaultString, deleteWhitespace, difference, endsWith, endsWithAny, endsWithIgnoreCase, equals, equalsAny, equalsAnyIgnoreCase, equalsIgnoreCase, firstNonBlank, firstNonEmpty, getBytes, getBytes, getCommonPrefix, getDigits, getFuzzyDistance, getIfBlank, getIfEmpty, getJaroWinklerDistance, getLevenshteinDistance, getLevenshteinDistance, indexOf, indexOf, indexOf, indexOf, indexOfAny, indexOfAny, indexOfAny, indexOfAnyBut, indexOfAnyBut, indexOfDifference, indexOfDifference, indexOfIgnoreCase, indexOfIgnoreCase, isAllBlank, isAllEmpty, isAllLowerCase, isAllUpperCase, isAlpha, isAlphanumeric, isAlphanumericSpace, isAlphaSpace, isAnyBlank, isAnyEmpty, isAsciiPrintable, isBlank, isEmpty, isMixedCase, isNoneBlank, isNoneEmpty, isNotBlank, isNotEmpty, isNumeric, isNumericSpace, isWhitespace, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, join, joinWith, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOfAny, lastIndexOfIgnoreCase, lastIndexOfIgnoreCase, lastOrdinalIndexOf, left, leftPad, leftPad, leftPad, length, lowerCase, lowerCase, mid, normalizeSpace, ordinalIndexOf, overlay, prependIfMissing, prependIfMissingIgnoreCase, remove, remove, removeAll, removeEnd, removeEndIgnoreCase, removeFirst, removeIgnoreCase, removePattern, removeStart, removeStart, removeStartIgnoreCase, repeat, repeat, repeat, replace, replaceAll, replaceChars, replaceChars, replaceEach, replaceEachRepeatedly, replaceFirst, replaceIgnoreCase, replaceIgnoreCase, replaceOnce, replaceOnceIgnoreCase, replacePattern, reverse, reverseDelimited, right, rightPad, rightPad, rightPad, rotate, split, split, split, splitByCharacterType, splitByCharacterTypeCamelCase, splitByWholeSeparator, splitByWholeSeparator, splitByWholeSeparatorPreserveAllTokens, splitByWholeSeparatorPreserveAllTokens, splitPreserveAllTokens, splitPreserveAllTokens, splitPreserveAllTokens, splitPreserveAllTokens, startsWith, startsWithAny, startsWithIgnoreCase, strip, strip, stripAccents, stripAll, stripAll, stripEnd, stripStart, stripToEmpty, stripToNull, substring, substring, substringAfter, substringAfter, substringAfterLast, substringAfterLast, substringBefore, substringBefore, substringBeforeLast, substringBetween, substringBetween, substringsBetween, swapCase, toCodePoints, toEncodedString, toRootLowerCase, toRootUpperCase, toString, trim, trimToEmpty, trimToNull, truncate, truncate, unwrap, unwrap, upperCase, upperCase, valueOf, wrap, wrap, wrapIfMissing, wrapIfMissing

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • StringTools

      public StringTools()
  • Method Details

    • cleanBlank

      public static String cleanBlank(CharSequence str)
      清理空白字符
      Parameters:
      str - 被清理的字符串
      Returns:
      清理后的字符串
    • filter

      public static String filter(CharSequence str, Filter<Character> filter)
      过滤字符串
      Parameters:
      str - 字符串
      filter - 过滤器,Filter.accept(Object)返回为true的保留字符
      Returns:
      过滤后的字符串
      Since:
      5.4.0
    • isNumber

      public static boolean isNumber(CharSequence str)
      是否为数字,支持包括:
       1、10进制
       2、16进制数字(0x开头)
       3、科学计数法形式(1234E3)
       4、类型标识形式(123D)
       5、正负数标识形式(+123、-234)
       
      Parameters:
      str - 字符串值
      Returns:
      是否为数字
    • toLowerCase

      public static String[] toLowerCase(String[] strArr)
    • contains

      public static boolean contains(String str, String[] strArr)
    • startWith

      public static boolean startWith(CharSequence str, char c)
      字符串是否以给定字符开始
      Parameters:
      str - 字符串
      c - 字符
      Returns:
      是否开始
    • startWith

      public static boolean startWith(CharSequence str, CharSequence prefix, boolean ignoreCase)
      是否以指定字符串开头
      如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
      Parameters:
      str - 被监测字符串
      prefix - 开头字符串
      ignoreCase - 是否忽略大小写
      Returns:
      是否以指定字符串开头
      Since:
      5.4.3
    • startWith

      public static boolean startWith(CharSequence str, CharSequence prefix, boolean ignoreCase, boolean ignoreEquals)
      是否以指定字符串开头
      如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回false
      Parameters:
      str - 被监测字符串
      prefix - 开头字符串
      ignoreCase - 是否忽略大小写
      ignoreEquals - 是否忽略字符串相等的情况
      Returns:
      是否以指定字符串开头
      Since:
      5.4.3
    • startWith

      public static boolean startWith(CharSequence str, CharSequence prefix)
      是否以指定字符串开头
      Parameters:
      str - 被监测字符串
      prefix - 开头字符串
      Returns:
      是否以指定字符串开头
    • startWithIgnoreEquals

      public static boolean startWithIgnoreEquals(CharSequence str, CharSequence prefix)
      是否以指定字符串开头,忽略相等字符串的情况
      Parameters:
      str - 被监测字符串
      prefix - 开头字符串
      Returns:
      是否以指定字符串开头并且两个字符串不相等
    • startWithIgnoreCase

      public static boolean startWithIgnoreCase(CharSequence str, CharSequence prefix)
      是否以指定字符串开头,忽略大小写
      Parameters:
      str - 被监测字符串
      prefix - 开头字符串
      Returns:
      是否以指定字符串开头
    • startWithAny

      public static boolean startWithAny(CharSequence str, CharSequence... prefixes)
      给定字符串是否以任何一个字符串开始
      给定字符串和数组为空都返回false
      Parameters:
      str - 给定字符串
      prefixes - 需要检测的开始字符串
      Returns:
      给定字符串是否以任何一个字符串开始
      Since:
      3.0.6
    • isSubEquals

      public static boolean isSubEquals(CharSequence str1, int start1, CharSequence str2, int start2, int length, boolean ignoreCase)
      截取两个字符串的不同部分(长度一致),判断截取的子串是否相同
      任意一个字符串为null返回false
      Parameters:
      str1 - 第一个字符串
      start1 - 第一个字符串开始的位置
      str2 - 第二个字符串
      start2 - 第二个字符串开始的位置
      length - 截取长度
      ignoreCase - 是否忽略大小写
      Returns:
      子串是否相同
      Since:
      3.2.1
    • indexOf

      public static int indexOf(CharSequence str, CharSequence searchStr, int fromIndex, boolean ignoreCase)
      指定范围内查找字符串
      Parameters:
      str - 字符串
      searchStr - 需要查找位置的字符串
      fromIndex - 起始位置
      ignoreCase - 是否忽略大小写
      Returns:
      位置
      Since:
      3.2.1
    • removeSuffix

      public static String removeSuffix(CharSequence str, CharSequence suffix)
      去掉指定后缀
      Parameters:
      str - 字符串
      suffix - 后缀
      Returns:
      切掉后的字符串,若后缀不是 suffix, 返回原字符串
    • subSuf

      public static String subSuf(CharSequence string, int fromIndex)
      切割指定位置之后部分的字符串
      Parameters:
      string - 字符串
      fromIndex - 切割开始的位置(包括)
      Returns:
      切割后后剩余的后半部分字符串
    • str

      public static String str(CharSequence cs)
      CharSequence 转为字符串,null安全
      Parameters:
      cs - CharSequence
      Returns:
      字符串
    • replaceIgnoreCase

      public static String replaceIgnoreCase(CharSequence str, CharSequence searchStr, CharSequence replacement)
      替换字符串中的指定字符串,忽略大小写
      Parameters:
      str - 字符串
      searchStr - 被查找的字符串
      replacement - 被替换的字符串
      Returns:
      替换后的字符串
      Since:
      4.0.3
    • replace

      public static String replace(CharSequence str, CharSequence searchStr, CharSequence replacement)
      替换字符串中的指定字符串
      Parameters:
      str - 字符串
      searchStr - 被查找的字符串
      replacement - 被替换的字符串
      Returns:
      替换后的字符串
      Since:
      4.0.3
    • replace

      public static String replace(CharSequence str, CharSequence searchStr, CharSequence replacement, boolean ignoreCase)
      替换字符串中的指定字符串
      Parameters:
      str - 字符串
      searchStr - 被查找的字符串
      replacement - 被替换的字符串
      ignoreCase - 是否忽略大小写
      Returns:
      替换后的字符串
      Since:
      4.0.3
    • replace

      public static String replace(CharSequence str, int fromIndex, CharSequence searchStr, CharSequence replacement, boolean ignoreCase)
      替换字符串中的指定字符串
      Parameters:
      str - 字符串
      fromIndex - 开始位置(包括)
      searchStr - 被查找的字符串
      replacement - 被替换的字符串
      ignoreCase - 是否忽略大小写
      Returns:
      替换后的字符串
      Since:
      4.0.3
    • replace

      public static String replace(CharSequence str, int startInclude, int endExclude, char replacedChar)
      替换指定字符串的指定区间内字符为固定字符
      Parameters:
      str - 字符串
      startInclude - 开始位置(包含)
      endExclude - 结束位置(不包含)
      replacedChar - 被替换的字符
      Returns:
      替换后的字符串
      Since:
      3.2.1
    • replace

      public static String replace(CharSequence str, Pattern pattern, Func1<Matcher,String> replaceFun)
      替换所有正则匹配的文本,并使用自定义函数决定如何替换
      replaceFun可以通过Matcher提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。
       replaceAll(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-")
       // 结果为:"ZZZaaabbbccc中文-1234-"
       
      Parameters:
      str - 要替换的字符串
      pattern - 用于匹配的正则式
      replaceFun - 决定如何替换的函数
      Returns:
      替换后的字符串
      Since:
      4.2.2
      See Also:
    • replace

      public static String replace(CharSequence str, String regex, Func1<Matcher,String> replaceFun)
      替换所有正则匹配的文本,并使用自定义函数决定如何替换
      Parameters:
      str - 要替换的字符串
      regex - 用于匹配的正则式
      replaceFun - 决定如何替换的函数
      Returns:
      替换后的字符串
      Since:
      4.2.2
      See Also:
    • hide

      public static String hide(CharSequence str, int startInclude, int endExclude)
      替换指定字符串的指定区间内字符为"*" 俗称:脱敏功能,后面其他功能,可以见:DesensitizedUtils(脱敏工具类)
       StrUtil.hide(null,*,*)=null
       StrUtil.hide("",0,*)=""
       StrUtil.hide("jackduan@163.com",-1,4)   ****duan@163.com
       StrUtil.hide("jackduan@163.com",2,3)    ja*kduan@163.com
       StrUtil.hide("jackduan@163.com",3,2)    jackduan@163.com
       StrUtil.hide("jackduan@163.com",16,16)  jackduan@163.com
       StrUtil.hide("jackduan@163.com",16,17)  jackduan@163.com
       
      Parameters:
      str - 字符串
      startInclude - 开始位置(包含)
      endExclude - 结束位置(不包含)
      Returns:
      替换后的字符串
      Since:
      4.1.14
    • desensitized

      public static String desensitized(CharSequence str, DesensitizedUtil.DesensitizedType desensitizedType)
      脱敏,使用默认的脱敏策略
       StrUtil.desensitized("100", DesensitizedUtils.DesensitizedType.USER_ID)) =  "0"
       StrUtil.desensitized("段正淳", DesensitizedUtils.DesensitizedType.CHINESE_NAME)) = "段**"
       StrUtil.desensitized("51343620000320711X", DesensitizedUtils.DesensitizedType.ID_CARD)) = "5***************1X"
       StrUtil.desensitized("09157518479", DesensitizedUtils.DesensitizedType.FIXED_PHONE)) = "0915*****79"
       StrUtil.desensitized("18049531999", DesensitizedUtils.DesensitizedType.MOBILE_PHONE)) = "180****1999"
       StrUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS)) = "北京市海淀区马********"
       StrUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn"
       StrUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********"
       StrUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0"
       StrUtil.desensitized("11011111222233333256", DesensitizedType.BANK_CARD)) = "1101 **** **** **** 3256"
       
      Parameters:
      str - 字符串
      desensitizedType - 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码
      Returns:
      脱敏之后的字符串
      Since:
      5.6.2
      See Also:
    • replaceChars

      public static String replaceChars(CharSequence str, String chars, CharSequence replacedStr)
      替换字符字符数组中所有的字符为replacedStr
      提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在
      Parameters:
      str - 被检查的字符串
      chars - 需要替换的字符列表,用一个字符串表示这个字符列表
      replacedStr - 替换成的字符串
      Returns:
      新字符串
      Since:
      3.2.2
    • replaceChars

      public static String replaceChars(CharSequence str, char[] chars, CharSequence replacedStr)
      替换字符字符数组中所有的字符为replacedStr
      Parameters:
      str - 被检查的字符串
      chars - 需要替换的字符列表
      replacedStr - 替换成的字符串
      Returns:
      新字符串
      Since:
      3.2.2
    • isAllCharMatch

      public static boolean isAllCharMatch(CharSequence value, Matcher<Character> matcher)
      字符串的每一个字符是否都与定义的匹配器匹配
      Parameters:
      value - 字符串
      matcher - 匹配器
      Returns:
      是否全部匹配
      Since:
      3.2.3
    • toString

      public static String toString(Object obj)
      数组或集合转String
      Parameters:
      obj - 集合或数组对象
      Returns:
      数组字符串,与集合转字符串格式相同
    • getContainsStr

      public static String getContainsStr(CharSequence str, CharSequence... testStrs)
      查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串
      Parameters:
      str - 指定字符串
      testStrs - 需要检查的字符串数组
      Returns:
      被包含的第一个字符串
      Since:
      3.2.0
    • containsAny

      public static boolean containsAny(CharSequence str, CharSequence... testStrs)
      查找指定字符串是否包含指定字符串列表中的任意一个字符串
      Parameters:
      str - 指定字符串
      testStrs - 需要检查的字符串数组
      Returns:
      是否包含任意一个字符串
      Since:
      3.2.0
    • containsAny

      public static boolean containsAny(CharSequence str, char... testChars)
      查找指定字符串是否包含指定字符列表中的任意一个字符
      Parameters:
      str - 指定字符串
      testChars - 需要检查的字符数组
      Returns:
      是否包含任意一个字符
      Since:
      4.1.11
    • subPre

      public static String subPre(CharSequence string, int toIndexExclude)
      切割指定位置之前部分的字符串
      Parameters:
      string - 字符串
      toIndexExclude - 切割到的位置(不包括)
      Returns:
      切割后的剩余的前半部分字符串
    • sub

      public static String sub(CharSequence str, int fromIndexInclude, int toIndexExclude)
      改进JDK subString
      index从0开始计算,最后一个字符为-1
      如果from和to位置一样,返回 ""
      如果from或to为负数,则按照length从后向前数位置,如果绝对值大于字符串长度,则from归到0,to归到length
      如果经过修正的index中from大于to,则互换from和to example:
      abcdefgh 2 3 =》 c
      abcdefgh 2 -3 =》 cde
      Parameters:
      str - String
      fromIndexInclude - 开始的index(包括)
      toIndexExclude - 结束的index(不包括)
      Returns:
      字串
    • format

      public static String format(CharSequence template, Map<?,?> map)
      格式化文本,使用 {varName} 占位
      map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue
      Parameters:
      template - 文本模板,被替换的部分用 {key} 表示
      map - 参数值对
      Returns:
      格式化后的文本
    • format

      public static String format(CharSequence template, Map<?,?> map, boolean ignoreNull)
      格式化文本,使用 {varName} 占位
      map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue
      Parameters:
      template - 文本模板,被替换的部分用 {key} 表示
      map - 参数值对
      ignoreNull - 是否忽略 null 值,忽略则 null 值对应的变量不被替换,否则替换为""
      Returns:
      格式化后的文本
      Since:
      5.4.3
    • format

      public static String format(CharSequence template, String special, Map<?,?> map, boolean ignoreNull)
      格式化文本,使用 'special'{varName} 特殊字符占位
      map = {a: "aValue", b: "bValue"} format("${a} and ${b}", map) ---=》 aValue and bValue
      Parameters:
      template - 文本模板,被替换的部分用 ${key} 表示
      map - 参数值对
      ignoreNull - 是否忽略 null 值,忽略则 null 值对应的变量不被替换,否则替换为""
      Returns:
      格式化后的文本
      Since:
      5.4.3
    • format

      public static String format(CharSequence template, String start, String end, Map<?,?> map, boolean ignoreNull)
    • format

      public static String format(CharSequence template, Object... params)
      格式化文本, {} 表示占位符
      此方法只是简单将占位符 {} 按照顺序替换为参数
      如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
      例:
      通常使用:format("this is {} for {}", "a", "b") =》 this is a for b
      转义{}: format("this is \\{} for {}", "a", "b") =》 this is \{} for a
      转义\: format("this is \\\\{} for {}", "a", "b") =》 this is \a for b
      Parameters:
      template - 文本模板,被替换的部分用 {} 表示,如果模板为null,返回"null"
      params - 参数值
      Returns:
      格式化后的文本,如果模板为null,返回"null"
    • hasLength

      public static boolean hasLength(@Nullable CharSequence str)
      Check that the given CharSequence is neither null nor of length 0.

      Note: this method returns true for a CharSequence that purely consists of whitespace.

       StringTools.hasLength(null) = false
       StringTools.hasLength("") = false
       StringTools.hasLength(" ") = true
       StringTools.hasLength("Hello") = true
       
      Parameters:
      str - the CharSequence to check (may be null)
      Returns:
      true if the CharSequence is not null and has length
      See Also:
    • hasLength

      public static boolean hasLength(@Nullable String str)
      Check that the given String is neither null nor of length 0.

      Note: this method returns true for a String that purely consists of whitespace.

      Parameters:
      str - the String to check (may be null)
      Returns:
      true if the String is not null and has length
      See Also:
    • hasText

      public static boolean hasText(@Nullable CharSequence str)
      Check whether the given CharSequence contains actual text.

      More specifically, this method returns true if the CharSequence is not null, its length is greater than 0, and it contains at least one non-whitespace character.

       StringTools.hasText(null) = false
       StringTools.hasText("") = false
       StringTools.hasText(" ") = false
       StringTools.hasText("12345") = true
       StringTools.hasText(" 12345 ") = true
       
      Parameters:
      str - the CharSequence to check (may be null)
      Returns:
      true if the CharSequence is not null, its length is greater than 0, and it does not contain whitespace only
      See Also:
    • hasText

      public static boolean hasText(@Nullable String str)
      Check whether the given String contains actual text.

      More specifically, this method returns true if the String is not null, its length is greater than 0, and it contains at least one non-whitespace character.

      Parameters:
      str - the String to check (may be null)
      Returns:
      true if the String is not null, its length is greater than 0, and it does not contain whitespace only
      See Also:
    • containsWhitespace

      public static boolean containsWhitespace(@Nullable CharSequence str)
      Check whether the given CharSequence contains any whitespace characters.
      Parameters:
      str - the CharSequence to check (may be null)
      Returns:
      true if the CharSequence is not empty and contains at least 1 whitespace character
      See Also:
    • containsWhitespace

      public static boolean containsWhitespace(@Nullable String str)
      Check whether the given String contains any whitespace characters.
      Parameters:
      str - the String to check (may be null)
      Returns:
      true if the String is not empty and contains at least 1 whitespace character
      See Also:
    • trimWhitespace

      public static String trimWhitespace(String str)
      Trim leading and trailing whitespace from the given String.
      Parameters:
      str - the String to check
      Returns:
      the trimmed String
      See Also:
    • trimAllWhitespace

      public static String trimAllWhitespace(String str)
      Trim all whitespace from the given String: leading, trailing, and in between characters.
      Parameters:
      str - the String to check
      Returns:
      the trimmed String
      See Also:
    • trimLeadingWhitespace

      public static String trimLeadingWhitespace(String str)
      Trim leading whitespace from the given String.
      Parameters:
      str - the String to check
      Returns:
      the trimmed String
      See Also:
    • trimTrailingWhitespace

      public static String trimTrailingWhitespace(String str)
      Trim trailing whitespace from the given String.
      Parameters:
      str - the String to check
      Returns:
      the trimmed String
      See Also:
    • trimLeadingCharacter

      public static String trimLeadingCharacter(String str, char leadingCharacter)
      Trim all occurrences of the supplied leading character from the given String.
      Parameters:
      str - the String to check
      leadingCharacter - the leading character to be trimmed
      Returns:
      the trimmed String
    • trimTrailingCharacter

      public static String trimTrailingCharacter(String str, char trailingCharacter)
      Trim all occurrences of the supplied trailing character from the given String.
      Parameters:
      str - the String to check
      trailingCharacter - the trailing character to be trimmed
      Returns:
      the trimmed String
    • startsWithIgnoreCase

      public static boolean startsWithIgnoreCase(@Nullable String str, @Nullable String prefix)
      Test if the given String starts with the specified prefix, ignoring upper/lower case.
      Parameters:
      str - the String to check
      prefix - the prefix to look for
      See Also:
    • endsWithIgnoreCase

      public static boolean endsWithIgnoreCase(@Nullable String str, @Nullable String suffix)
      Test if the given String ends with the specified suffix, ignoring upper/lower case.
      Parameters:
      str - the String to check
      suffix - the suffix to look for
      See Also:
    • substringMatch

      public static boolean substringMatch(CharSequence str, int index, CharSequence substring)
      Test whether the given string matches the given substring at the given index.
      Parameters:
      str - the original string (or StringBuilder)
      index - the index in the original string to start matching against
      substring - the substring to match at the given index
    • countOccurrencesOf

      public static int countOccurrencesOf(String str, String sub)
      Count the occurrences of the substring sub in string str.
      Parameters:
      str - string to search in
      sub - string to search for
    • replace

      public static String replace(String inString, String oldPattern, @Nullable String newPattern)
      Replace all occurrences of a substring within a string with another string.
      Parameters:
      inString - String to examine
      oldPattern - String to replace
      newPattern - String to insert
      Returns:
      a String with the replacements
    • delete

      public static String delete(String inString, String pattern)
      Delete all occurrences of the given substring.
      Parameters:
      inString - the original String
      pattern - the pattern to delete all occurrences of
      Returns:
      the resulting String
    • deleteAny

      public static String deleteAny(String inString, @Nullable String charsToDelete)
      Delete any character in a given String.
      Parameters:
      inString - the original String
      charsToDelete - a set of characters to delete. E.g. "az\n" will delete 'a's, 'z's and new lines.
      Returns:
      the resulting String
    • quote

      @Nullable public static String quote(@Nullable String str)
      Quote the given String with single quotes.
      Parameters:
      str - the input String (e.g. "myString")
      Returns:
      the quoted String (e.g. "'myString'"), or null if the input was null
    • quoteIfString

      @Nullable public static Object quoteIfString(@Nullable Object obj)
      Turn the given Object into a String with single quotes if it is a String; keeping the Object as-is else.
      Parameters:
      obj - the input Object (e.g. "myString")
      Returns:
      the quoted String (e.g. "'myString'"), or the input object as-is if not a String
    • unqualify

      public static String unqualify(String qualifiedName)
      Unqualify a string qualified by a '.' dot character. For example, "this.name.is.qualified", returns "qualified".
      Parameters:
      qualifiedName - the qualified name
    • unqualify

      public static String unqualify(String qualifiedName, char separator)
      Unqualify a string qualified by a separator character. For example, "this:name:is:qualified" returns "qualified" if using a ':' separator.
      Parameters:
      qualifiedName - the qualified name
      separator - the separator
    • capitalize

      public static String capitalize(String str)
      Capitalize a String, changing the first letter to upper case as per Character.toUpperCase(char). No other letters are changed.
      Parameters:
      str - the String to capitalize
      Returns:
      the capitalized String
    • uncapitalize

      public static String uncapitalize(String str)
      Uncapitalize a String, changing the first letter to lower case as per Character.toLowerCase(char). No other letters are changed.
      Parameters:
      str - the String to uncapitalize
      Returns:
      the uncapitalized String
    • getFilename

      @Nullable public static String getFilename(@Nullable String path)
      Extract the filename from the given Java resource path, e.g. "mypath/myfile.txt" -> "myfile.txt".
      Parameters:
      path - the file path (may be null)
      Returns:
      the extracted filename, or null if none
    • getFilenameExtension

      @Nullable public static String getFilenameExtension(@Nullable String path)
      Extract the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "txt".
      Parameters:
      path - the file path (may be null)
      Returns:
      the extracted filename extension, or null if none
    • stripFilenameExtension

      public static String stripFilenameExtension(String path)
      Strip the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "mypath/myfile".
      Parameters:
      path - the file path
      Returns:
      the path with stripped filename extension
    • applyRelativePath

      public static String applyRelativePath(String path, String relativePath)
      Apply the given relative path to the given Java resource path, assuming standard Java folder separation (i.e. "/" separators).
      Parameters:
      path - the path to start from (usually a full file path)
      relativePath - the relative path to apply (relative to the full file path above)
      Returns:
      the full file path that results from applying the relative path
    • cleanPath

      public static String cleanPath(String path)
      Normalize the path by suppressing sequences like "path/.." and inner simple dots.

      The result is convenient for path comparison. For other uses, notice that Windows separators ("\") are replaced by simple slashes.

      Parameters:
      path - the original path
      Returns:
      the normalized path
    • pathEquals

      public static boolean pathEquals(String path1, String path2)
      Compare two paths after normalization of them.
      Parameters:
      path1 - first path for comparison
      path2 - second path for comparison
      Returns:
      whether the two paths are equivalent after normalization
    • uriDecode

      public static String uriDecode(String source, Charset charset)
      Decode the given encoded URI component value. Based on the following rules:
      • Alphanumeric characters "a" through "z", "A" through "Z", and "0" through "9" stay the same.
      • Special characters "-", "_", ".", and "*" stay the same.
      • A sequence "%<i>xy</i>" is interpreted as a hexadecimal representation of the character.
      Parameters:
      source - the encoded String
      charset - the character set
      Returns:
      the decoded value
      Throws:
      IllegalArgumentException - when the given source contains invalid encoded sequences
      Since:
      5.0
      See Also:
    • parseLocale

      @Nullable public static Locale parseLocale(String localeValue)
      Parse the given String value into a Locale, accepting the Locale.toString() format as well as BCP 47 language tags.
      Parameters:
      localeValue - the locale value: following either Locale's toString() format ("en", "en_UK", etc), also accepting spaces as separators (as an alternative to underscores), or BCP 47 (e.g. "en-UK") as specified by Locale.forLanguageTag(java.lang.String) on Java 7+
      Returns:
      a corresponding Locale instance, or null if none
      Throws:
      IllegalArgumentException - in case of an invalid locale specification
      Since:
      5.0.4
      See Also:
    • parseLocaleString

      @Nullable public static Locale parseLocaleString(String localeString)
      Parse the given String representation into a Locale.

      For many parsing scenarios, this is an inverse operation of Locale's toString, in a lenient sense. This method does not aim for strict Locale design compliance; it is rather specifically tailored for typical Spring parsing needs.

      Note: This delegate does not accept the BCP 47 language tag format. Please use parseLocale(java.lang.String) for lenient parsing of both formats.

      Parameters:
      localeString - the locale String: following Locale's toString() format ("en", "en_UK", etc), also accepting spaces as separators (as an alternative to underscores)
      Returns:
      a corresponding Locale instance, or null if none
      Throws:
      IllegalArgumentException - in case of an invalid locale specification
    • toLanguageTag

      @Deprecated public static String toLanguageTag(Locale locale)
      Deprecated.
      as of 5.0.4, in favor of Locale.toLanguageTag()
      Determine the RFC 3066 compliant language tag, as used for the HTTP "Accept-Language" header.
      Parameters:
      locale - the Locale to transform to a language tag
      Returns:
      the RFC 3066 compliant language tag as String
    • parseTimeZoneString

      public static TimeZone parseTimeZoneString(String timeZoneString)
      Parse the given timeZoneString value into a TimeZone.
      Parameters:
      timeZoneString - the time zone String, following TimeZone.getTimeZone(String) but throwing IllegalArgumentException in case of an invalid time zone specification
      Returns:
      a corresponding TimeZone instance
      Throws:
      IllegalArgumentException - in case of an invalid time zone specification
    • toStringArray

      public static String[] toStringArray(@Nullable Collection<String> collection)
      Copy the given Collection into a String array.

      The Collection must contain String elements only.

      Parameters:
      collection - the Collection to copy (potentially null or empty)
      Returns:
      the resulting String array
    • toStringArray

      public static String[] toStringArray(@Nullable Enumeration<String> enumeration)
      Copy the given Enumeration into a String array.

      The Enumeration must contain String elements only.

      Parameters:
      enumeration - the Enumeration to copy (potentially null or empty)
      Returns:
      the resulting String array
    • addStringToArray

      public static String[] addStringToArray(@Nullable String[] array, String str)
      Append the given String to the given String array, returning a new array consisting of the input array contents plus the given String.
      Parameters:
      array - the array to append to (can be null)
      str - the String to append
      Returns:
      the new array (never null)
    • concatenateStringArrays

      @Nullable public static String[] concatenateStringArrays(@Nullable String[] array1, @Nullable String[] array2)
      Concatenate the given String arrays into one, with overlapping array elements included twice.

      The order of elements in the original arrays is preserved.

      Parameters:
      array1 - the first array (can be null)
      array2 - the second array (can be null)
      Returns:
      the new array (null if both given arrays were null)
    • mergeStringArrays

      @Deprecated @Nullable public static String[] mergeStringArrays(@Nullable String[] array1, @Nullable String[] array2)
      Deprecated.
      as of 4.3.15, in favor of manual merging via LinkedHashSet (with every entry included at most once, even entries within the first array)
      Merge the given String arrays into one, with overlapping array elements only included once.

      The order of elements in the original arrays is preserved (with the exception of overlapping elements, which are only included on their first occurrence).

      Parameters:
      array1 - the first array (can be null)
      array2 - the second array (can be null)
      Returns:
      the new array (null if both given arrays were null)
    • sortStringArray

      public static String[] sortStringArray(String[] array)
      Sort the given String array if necessary.
      Parameters:
      array - the original array (potentially empty)
      Returns:
      the array in sorted form (never null)
    • trimArrayElements

      public static String[] trimArrayElements(String[] array)
      Trim the elements of the given String array, calling String.trim() on each of them.
      Parameters:
      array - the original String array (potentially empty)
      Returns:
      the resulting array (of the same size) with trimmed elements
    • removeDuplicateStrings

      public static String[] removeDuplicateStrings(String[] array)
      Remove duplicate strings from the given array.

      As of 4.2, it preserves the original order, as it uses a LinkedHashSet.

      Parameters:
      array - the String array (potentially empty)
      Returns:
      an array without duplicates, in natural sort order
    • split

      @Nullable public static String[] split(@Nullable String toSplit, @Nullable String delimiter)
      Split a String at the first occurrence of the delimiter. Does not include the delimiter in the result.
      Parameters:
      toSplit - the string to split (potentially null or empty)
      delimiter - to split the string up with (potentially null or empty)
      Returns:
      a two element array with index 0 being before the delimiter, and index 1 being after the delimiter (neither element includes the delimiter); or null if the delimiter wasn't found in the given input String
    • splitArrayElementsIntoProperties

      @Nullable public static Properties splitArrayElementsIntoProperties(String[] array, String delimiter)
      取一个字符串数组,并根据给定的定界符分割每个元素。然后,生成一个Properties实例,其中分隔符的左侧提供键,而分隔符的右侧提供值。 Take an array of strings and split each element based on the given delimiter. A Properties instance is then generated, with the left of the delimiter providing the key, and the right of the delimiter providing the value.

      Will trim both the key and value before adding them to the Properties.

      Parameters:
      array - the array to process
      delimiter - to split each element using (typically the equals symbol)
      Returns:
      a Properties instance representing the array contents, or null if the array to process was null or empty
    • splitArrayElementsIntoProperties

      @Nullable public static Properties splitArrayElementsIntoProperties(String[] array, String delimiter, @Nullable String charsToDelete)
      取一个字符串数组,并根据给定的定界符分割每个元素。然后,生成一个Properties实例,其中分隔符的左侧提供键,而分隔符的右侧提供值。 Take an array of strings and split each element based on the given delimiter. A Properties instance is then generated, with the left of the delimiter providing the key, and the right of the delimiter providing the value.

      Will trim both the key and value before adding them to the Properties instance.

      Parameters:
      array - the array to process
      delimiter - to split each element using (typically the equals symbol)
      charsToDelete - one or more characters to remove from each element prior to attempting the split operation (typically the quotation mark symbol), or null if no removal should occur
      Returns:
      a Properties instance representing the array contents, or null if the array to process was null or empty
    • tokenizeToStringArray

      public static String[] tokenizeToStringArray(@Nullable String str, String delimiters)
      Tokenize the given String into a String array via a StringTokenizer.

      Trims tokens and omits empty tokens.

      The given delimiters string can consist of any number of delimiter characters. Each of those characters can be used to separate tokens. A delimiter is always a single character; for multi-character delimiters, consider using delimitedListToStringArray(java.lang.String, java.lang.String).

      Parameters:
      str - the String to tokenize (potentially null or empty)
      delimiters - the delimiter characters, assembled as a String (each of the characters is individually considered as a delimiter)
      Returns:
      an array of the tokens
      See Also:
    • tokenizeToStringArray

      public static String[] tokenizeToStringArray(@Nullable String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens)
      Tokenize the given String into a String array via a StringTokenizer.

      The given delimiters string can consist of any number of delimiter characters. Each of those characters can be used to separate tokens. A delimiter is always a single character; for multi-character delimiters, consider using delimitedListToStringArray(java.lang.String, java.lang.String).

      Parameters:
      str - the String to tokenize (potentially null or empty)
      delimiters - the delimiter characters, assembled as a String (each of the characters is individually considered as a delimiter)
      trimTokens - trim the tokens via String.trim()
      ignoreEmptyTokens - omit empty tokens from the result array (only applies to tokens that are empty after trimming; StringTokenizer will not consider subsequent delimiters as token in the first place).
      Returns:
      an array of the tokens
      See Also:
    • delimitedListToStringArray

      public static String[] delimitedListToStringArray(@Nullable String str, @Nullable String delimiter)
      Take a String that is a delimited list and convert it into a String array.

      A single delimiter may consist of more than one character, but it will still be considered as a single delimiter string, rather than as bunch of potential delimiter characters, in contrast to tokenizeToStringArray(java.lang.String, java.lang.String).

      Parameters:
      str - the input String (potentially null or empty)
      delimiter - the delimiter between elements (this is a single delimiter, rather than a bunch individual delimiter characters)
      Returns:
      an array of the tokens in the list
      See Also:
    • delimitedListToStringArray

      public static String[] delimitedListToStringArray(@Nullable String str, @Nullable String delimiter, @Nullable String charsToDelete)
      Take a String that is a delimited list and convert it into a String array.

      A single delimiter may consist of more than one character, but it will still be considered as a single delimiter string, rather than as bunch of potential delimiter characters, in contrast to tokenizeToStringArray(java.lang.String, java.lang.String).

      Parameters:
      str - the input String (potentially null or empty)
      delimiter - the delimiter between elements (this is a single delimiter, rather than a bunch individual delimiter characters)
      charsToDelete - a set of characters to delete; useful for deleting unwanted line breaks: e.g. "\r\n\f" will delete all new lines and line feeds in a String
      Returns:
      an array of the tokens in the list
      See Also:
    • commaDelimitedListToStringArray

      public static String[] commaDelimitedListToStringArray(@Nullable String str)
      将以逗号分隔的列表(例如,CSV文件中的一行)转换为字符串数组。 Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.
      Parameters:
      str - the input String (potentially null or empty)
      Returns:
      an array of strings, or the empty array in case of empty input
    • commaDelimitedListToSet

      public static Set<String> commaDelimitedListToSet(@Nullable String str)
      Convert a comma delimited list (e.g., a row from a CSV file) into a set.

      Note that this will suppress duplicates, and as of 4.2, the elements in the returned set will preserve the original order in a LinkedHashSet.

      Parameters:
      str - the input String (potentially null or empty)
      Returns:
      a set of String entries in the list
      See Also:
    • collectionToDelimitedString

      public static String collectionToDelimitedString(@Nullable Collection<?> coll, String delim, String prefix, String suffix)
      Convert a Collection to a delimited String (e.g. CSV).

      Useful for toString() implementations.

      Parameters:
      coll - the Collection to convert (potentially null or empty)
      delim - the delimiter to use (typically a ",")
      prefix - the String to start each element with
      suffix - the String to end each element with
      Returns:
      the delimited String
    • collectionToDelimitedString

      public static String collectionToDelimitedString(@Nullable Collection<?> coll, String delim)
      Convert a Collection into a delimited String (e.g. CSV).

      Useful for toString() implementations.

      Parameters:
      coll - the Collection to convert (potentially null or empty)
      delim - the delimiter to use (typically a ",")
      Returns:
      the delimited String
    • collectionToCommaDelimitedString

      public static String collectionToCommaDelimitedString(@Nullable Collection<?> coll)
      Convert a Collection into a delimited String (e.g., CSV).

      Useful for toString() implementations.

      Parameters:
      coll - the Collection to convert (potentially null or empty)
      Returns:
      the delimited String
    • arrayToDelimitedString

      public static String arrayToDelimitedString(@Nullable Object[] arr, String delim)
      Convert a String array into a delimited String (e.g. CSV).

      Useful for toString() implementations.

      Parameters:
      arr - the array to display (potentially null or empty)
      delim - the delimiter to use (typically a ",")
      Returns:
      the delimited String
    • arrayToCommaDelimitedString

      public static String arrayToCommaDelimitedString(@Nullable Object[] arr)
      Convert a String array into a comma delimited String (i.e., CSV).

      Useful for toString() implementations.

      Parameters:
      arr - the array to display (potentially null or empty)
      Returns:
      the delimited String
    • getReader

      public static StringReader getReader(CharSequence str)
      获得StringReader
      Parameters:
      str - 字符串
      Returns:
      StringReader
    • getWriter

      public static StringWriter getWriter()
      获得StringWriter
      Returns:
      StringWriter