Class StringTools
- 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
-
Method Summary
Modifier and TypeMethodDescriptionstatic String[]
addStringToArray
(String[] array, String str) Append the givenString
to the givenString
array, returning a new array consisting of the input array contents plus the givenString
.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 aString
array into a comma delimitedString
(i.e., CSV).static String
arrayToDelimitedString
(Object[] arr, String delim) Convert aString
array into a delimitedString
(e.g.static String
capitalize
(String str) Capitalize aString
, changing the first letter to upper case as perCharacter.toUpperCase(char)
.static String
cleanBlank
(CharSequence str) 清理空白字符static String
Normalize the path by suppressing sequences like "path/.." and inner simple dots.static String
Convert aCollection
into a delimitedString
(e.g., CSV).static String
collectionToDelimitedString
(Collection<?> coll, String delim) Convert aCollection
into a delimitedString
(e.g.static String
collectionToDelimitedString
(Collection<?> coll, String delim, String prefix, String suffix) Convert aCollection
to a delimitedString
(e.g.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 givenString
arrays into one, with overlapping array elements included twice.static boolean
static boolean
containsAny
(CharSequence str, char... testChars) 查找指定字符串是否包含指定字符列表中的任意一个字符static boolean
containsAny
(CharSequence str, CharSequence... testStrs) 查找指定字符串是否包含指定字符串列表中的任意一个字符串static boolean
Check whether the givenCharSequence
contains any whitespace characters.static boolean
containsWhitespace
(String str) Check whether the givenString
contains any whitespace characters.static int
countOccurrencesOf
(String str, String sub) Count the occurrences of the substringsub
in stringstr
.static String
Delete all occurrences of the given substring.static String
Delete any character in a givenString
.static String[]
delimitedListToStringArray
(String str, String delimiter) Take aString
that is a delimited list and convert it into aString
array.static String[]
delimitedListToStringArray
(String str, String delimiter, String charsToDelete) Take aString
that is a delimited list and convert it into aString
array.static String
desensitized
(CharSequence str, DesensitizedUtil.DesensitizedType desensitizedType) 脱敏,使用默认的脱敏策略static boolean
endsWithIgnoreCase
(String str, String suffix) Test if the givenString
ends with the specified suffix, ignoring upper/lower case.static String
filter
(CharSequence str, Filter<Character> filter) 过滤字符串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 bstatic 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 bValuestatic String
format
(CharSequence template, Map<?, ?> map) 格式化文本,使用 {varName} 占位
map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValuestatic String
format
(CharSequence template, Map<?, ?> map, boolean ignoreNull) 格式化文本,使用 {varName} 占位
map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValuestatic String
getContainsStr
(CharSequence str, CharSequence... testStrs) 查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串static String
getFilename
(String path) Extract the filename from the given Java resource path, e.g.static String
getFilenameExtension
(String path) Extract the filename extension from the given Java resource path, e.g.static StringReader
getReader
(CharSequence str) 获得StringReaderstatic StringWriter
获得StringWriterstatic boolean
hasLength
(CharSequence str) Check that the givenCharSequence
is neithernull
nor of length 0.static boolean
Check that the givenString
is neithernull
nor of length 0.static boolean
hasText
(CharSequence str) Check whether the givenCharSequence
contains actual text.static boolean
Check whether the givenString
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
isAllCharMatch
(CharSequence value, Matcher<Character> matcher) 字符串的每一个字符是否都与定义的匹配器匹配static boolean
isNumber
(CharSequence str) 是否为数字,支持包括:static boolean
isSubEquals
(CharSequence str1, int start1, CharSequence str2, int start2, int length, boolean ignoreCase) 截取两个字符串的不同部分(长度一致),判断截取的子串是否相同
任意一个字符串为null返回falsestatic String[]
mergeStringArrays
(String[] array1, String[] array2) Deprecated.static Locale
parseLocale
(String localeValue) Parse the givenString
value into aLocale
, accepting theLocale.toString()
format as well as BCP 47 language tags.static Locale
parseLocaleString
(String localeString) Parse the givenString
representation into aLocale
.static TimeZone
parseTimeZoneString
(String timeZoneString) Parse the giventimeZoneString
value into aTimeZone
.static boolean
pathEquals
(String path1, String path2) Compare two paths after normalization of them.static String
Quote the givenString
with single quotes.static Object
quoteIfString
(Object obj) Turn the given Object into aString
with single quotes if it is aString
; keeping the Object as-is else.static String[]
removeDuplicateStrings
(String[] array) Remove duplicate strings from the given array.static String
removeSuffix
(CharSequence str, CharSequence suffix) 去掉指定后缀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
替换所有正则匹配的文本,并使用自定义函数决定如何替换static String
替换所有正则匹配的文本,并使用自定义函数决定如何替换
replaceFun可以通过Matcher
提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。static String
Replace all occurrences of a substring within a string with another string.static String
replaceChars
(CharSequence str, char[] chars, CharSequence replacedStr) 替换字符字符数组中所有的字符为replacedStrstatic String
replaceChars
(CharSequence str, String chars, CharSequence replacedStr) 替换字符字符数组中所有的字符为replacedStr
提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在static String
replaceIgnoreCase
(CharSequence str, CharSequence searchStr, CharSequence replacement) 替换字符串中的指定字符串,忽略大小写static String[]
sortStringArray
(String[] array) Sort the givenString
array if necessary.static String[]
Split aString
at the first occurrence of the delimiter.static Properties
splitArrayElementsIntoProperties
(String[] array, String delimiter) 取一个字符串数组,并根据给定的定界符分割每个元素。然后,生成一个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
startsWithIgnoreCase
(String str, String prefix) Test if the givenString
starts with the specified prefix, ignoring upper/lower case.static boolean
startWith
(CharSequence str, char c) 字符串是否以给定字符开始static boolean
startWith
(CharSequence str, CharSequence prefix) 是否以指定字符串开头static boolean
startWith
(CharSequence str, CharSequence prefix, boolean ignoreCase) 是否以指定字符串开头
如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回falsestatic boolean
startWith
(CharSequence str, CharSequence prefix, boolean ignoreCase, boolean ignoreEquals) 是否以指定字符串开头
如果给定的字符串和开头字符串都为null则返回true,否则任意一个值为null返回falsestatic boolean
startWithAny
(CharSequence str, CharSequence... prefixes) 给定字符串是否以任何一个字符串开始
给定字符串和数组为空都返回falsestatic boolean
startWithIgnoreCase
(CharSequence str, CharSequence prefix) 是否以指定字符串开头,忽略大小写static boolean
startWithIgnoreEquals
(CharSequence str, CharSequence prefix) 是否以指定字符串开头,忽略相等字符串的情况static String
str
(CharSequence cs) CharSequence
转为字符串,null安全static String
stripFilenameExtension
(String path) 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 =》 cdestatic 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[]
tokenizeToStringArray
(String str, String delimiters) static String[]
tokenizeToStringArray
(String str, String delimiters, boolean trimTokens, boolean ignoreEmptyTokens) static String
toLanguageTag
(Locale locale) Deprecated.as of 5.0.4, in favor ofLocale.toLanguageTag()
static String[]
toLowerCase
(String[] strArr) static String
数组或集合转Stringstatic String[]
toStringArray
(Collection<String> collection) Copy the givenCollection
into aString
array.static String[]
toStringArray
(Enumeration<String> enumeration) Copy the givenEnumeration
into aString
array.static String
trimAllWhitespace
(String str) Trim all whitespace from the givenString
: leading, trailing, and in between characters.static String[]
trimArrayElements
(String[] array) Trim the elements of the givenString
array, callingString.trim()
on each of them.static String
trimLeadingCharacter
(String str, char leadingCharacter) Trim all occurrences of the supplied leading character from the givenString
.static String
Trim leading whitespace from the givenString
.static String
trimTrailingCharacter
(String str, char trailingCharacter) Trim all occurrences of the supplied trailing character from the givenString
.static String
Trim trailing whitespace from the givenString
.static String
trimWhitespace
(String str) Trim leading and trailing whitespace from the givenString
.static String
uncapitalize
(String str) Uncapitalize aString
, changing the first letter to lower case as perCharacter.toLowerCase(char)
.static String
Unqualify a string qualified by a '.' dot character.static String
Unqualify a string qualified by a separator character.static String
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
-
Constructor Details
-
StringTools
public StringTools()
-
-
Method Details
-
cleanBlank
清理空白字符- Parameters:
str
- 被清理的字符串- Returns:
- 清理后的字符串
-
filter
过滤字符串- Parameters:
str
- 字符串filter
- 过滤器,Filter.accept(Object)
返回为true
的保留字符- Returns:
- 过滤后的字符串
- Since:
- 5.4.0
-
isNumber
是否为数字,支持包括:1、10进制 2、16进制数字(0x开头) 3、科学计数法形式(1234E3) 4、类型标识形式(123D) 5、正负数标识形式(+123、-234)
- Parameters:
str
- 字符串值- Returns:
- 是否为数字
-
toLowerCase
-
contains
-
startWith
字符串是否以给定字符开始- Parameters:
str
- 字符串c
- 字符- Returns:
- 是否开始
-
startWith
是否以指定字符串开头
如果给定的字符串和开头字符串都为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
是否以指定字符串开头- Parameters:
str
- 被监测字符串prefix
- 开头字符串- Returns:
- 是否以指定字符串开头
-
startWithIgnoreEquals
是否以指定字符串开头,忽略相等字符串的情况- Parameters:
str
- 被监测字符串prefix
- 开头字符串- Returns:
- 是否以指定字符串开头并且两个字符串不相等
-
startWithIgnoreCase
是否以指定字符串开头,忽略大小写- Parameters:
str
- 被监测字符串prefix
- 开头字符串- Returns:
- 是否以指定字符串开头
-
startWithAny
给定字符串是否以任何一个字符串开始
给定字符串和数组为空都返回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
去掉指定后缀- Parameters:
str
- 字符串suffix
- 后缀- Returns:
- 切掉后的字符串,若后缀不是 suffix, 返回原字符串
-
subSuf
切割指定位置之后部分的字符串- Parameters:
string
- 字符串fromIndex
- 切割开始的位置(包括)- Returns:
- 切割后后剩余的后半部分字符串
-
str
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
替换字符串中的指定字符串- 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
替换指定字符串的指定区间内字符为固定字符- Parameters:
str
- 字符串startInclude
- 开始位置(包含)endExclude
- 结束位置(不包含)replacedChar
- 被替换的字符- Returns:
- 替换后的字符串
- Since:
- 3.2.1
-
replace
替换所有正则匹配的文本,并使用自定义函数决定如何替换
replaceFun可以通过Matcher
提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。replaceAll(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-") // 结果为:"ZZZaaabbbccc中文-1234-"
- Parameters:
str
- 要替换的字符串pattern
- 用于匹配的正则式replaceFun
- 决定如何替换的函数- Returns:
- 替换后的字符串
- Since:
- 4.2.2
- See Also:
-
replace
替换所有正则匹配的文本,并使用自定义函数决定如何替换- Parameters:
str
- 要替换的字符串regex
- 用于匹配的正则式replaceFun
- 决定如何替换的函数- Returns:
- 替换后的字符串
- Since:
- 4.2.2
- See Also:
-
hide
替换指定字符串的指定区间内字符为"*" 俗称:脱敏功能,后面其他功能,可以见: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
替换字符字符数组中所有的字符为replacedStr
提供的chars为所有需要被替换的字符,例如:"\r\n",则"\r"和"\n"都会被替换,哪怕他们单独存在- Parameters:
str
- 被检查的字符串chars
- 需要替换的字符列表,用一个字符串表示这个字符列表replacedStr
- 替换成的字符串- Returns:
- 新字符串
- Since:
- 3.2.2
-
replaceChars
替换字符字符数组中所有的字符为replacedStr- Parameters:
str
- 被检查的字符串chars
- 需要替换的字符列表replacedStr
- 替换成的字符串- Returns:
- 新字符串
- Since:
- 3.2.2
-
isAllCharMatch
字符串的每一个字符是否都与定义的匹配器匹配- Parameters:
value
- 字符串matcher
- 匹配器- Returns:
- 是否全部匹配
- Since:
- 3.2.3
-
toString
数组或集合转String- Parameters:
obj
- 集合或数组对象- Returns:
- 数组字符串,与集合转字符串格式相同
-
getContainsStr
查找指定字符串是否包含指定字符串列表中的任意一个字符串,如果包含返回找到的第一个字符串- Parameters:
str
- 指定字符串testStrs
- 需要检查的字符串数组- Returns:
- 被包含的第一个字符串
- Since:
- 3.2.0
-
containsAny
查找指定字符串是否包含指定字符串列表中的任意一个字符串- Parameters:
str
- 指定字符串testStrs
- 需要检查的字符串数组- Returns:
- 是否包含任意一个字符串
- Since:
- 3.2.0
-
containsAny
查找指定字符串是否包含指定字符列表中的任意一个字符- Parameters:
str
- 指定字符串testChars
- 需要检查的字符数组- Returns:
- 是否包含任意一个字符
- Since:
- 4.1.11
-
subPre
切割指定位置之前部分的字符串- Parameters:
string
- 字符串toIndexExclude
- 切割到的位置(不包括)- Returns:
- 切割后的剩余的前半部分字符串
-
sub
改进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
- StringfromIndexInclude
- 开始的index(包括)toIndexExclude
- 结束的index(不包括)- Returns:
- 字串
-
format
格式化文本,使用 {varName} 占位
map = {a: "aValue", b: "bValue"} format("{a} and {b}", map) ---=》 aValue and bValue- Parameters:
template
- 文本模板,被替换的部分用 {key} 表示map
- 参数值对- Returns:
- 格式化后的文本
-
format
格式化文本,使用 {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
格式化文本, {} 表示占位符
此方法只是简单将占位符 {} 按照顺序替换为参数
如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可
例:
通常使用: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
Check that the givenCharSequence
is neithernull
nor of length 0.Note: this method returns
true
for aCharSequence
that purely consists of whitespace.StringTools.hasLength(null) = false StringTools.hasLength("") = false StringTools.hasLength(" ") = true StringTools.hasLength("Hello") = true
- Parameters:
str
- theCharSequence
to check (may benull
)- Returns:
true
if theCharSequence
is notnull
and has length- See Also:
-
hasLength
Check that the givenString
is neithernull
nor of length 0.Note: this method returns
true
for aString
that purely consists of whitespace.- Parameters:
str
- theString
to check (may benull
)- Returns:
true
if theString
is notnull
and has length- See Also:
-
hasText
Check whether the givenCharSequence
contains actual text.More specifically, this method returns
true
if theCharSequence
is notnull
, 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
- theCharSequence
to check (may benull
)- Returns:
true
if theCharSequence
is notnull
, its length is greater than 0, and it does not contain whitespace only- See Also:
-
hasText
Check whether the givenString
contains actual text.More specifically, this method returns
true
if theString
is notnull
, its length is greater than 0, and it contains at least one non-whitespace character.- Parameters:
str
- theString
to check (may benull
)- Returns:
true
if theString
is notnull
, its length is greater than 0, and it does not contain whitespace only- See Also:
-
containsWhitespace
Check whether the givenCharSequence
contains any whitespace characters.- Parameters:
str
- theCharSequence
to check (may benull
)- Returns:
true
if theCharSequence
is not empty and contains at least 1 whitespace character- See Also:
-
containsWhitespace
Check whether the givenString
contains any whitespace characters.- Parameters:
str
- theString
to check (may benull
)- Returns:
true
if theString
is not empty and contains at least 1 whitespace character- See Also:
-
trimWhitespace
Trim leading and trailing whitespace from the givenString
.- Parameters:
str
- theString
to check- Returns:
- the trimmed
String
- See Also:
-
trimAllWhitespace
Trim all whitespace from the givenString
: leading, trailing, and in between characters.- Parameters:
str
- theString
to check- Returns:
- the trimmed
String
- See Also:
-
trimLeadingWhitespace
Trim leading whitespace from the givenString
.- Parameters:
str
- theString
to check- Returns:
- the trimmed
String
- See Also:
-
trimTrailingWhitespace
Trim trailing whitespace from the givenString
.- Parameters:
str
- theString
to check- Returns:
- the trimmed
String
- See Also:
-
trimLeadingCharacter
Trim all occurrences of the supplied leading character from the givenString
.- Parameters:
str
- theString
to checkleadingCharacter
- the leading character to be trimmed- Returns:
- the trimmed
String
-
trimTrailingCharacter
Trim all occurrences of the supplied trailing character from the givenString
.- Parameters:
str
- theString
to checktrailingCharacter
- the trailing character to be trimmed- Returns:
- the trimmed
String
-
startsWithIgnoreCase
Test if the givenString
starts with the specified prefix, ignoring upper/lower case.- Parameters:
str
- theString
to checkprefix
- the prefix to look for- See Also:
-
endsWithIgnoreCase
Test if the givenString
ends with the specified suffix, ignoring upper/lower case.- Parameters:
str
- theString
to checksuffix
- the suffix to look for- See Also:
-
substringMatch
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 againstsubstring
- the substring to match at the given index
-
countOccurrencesOf
Count the occurrences of the substringsub
in stringstr
.- Parameters:
str
- string to search insub
- string to search for
-
replace
Replace all occurrences of a substring within a string with another string.- Parameters:
inString
-String
to examineoldPattern
-String
to replacenewPattern
-String
to insert- Returns:
- a
String
with the replacements
-
delete
Delete all occurrences of the given substring.- Parameters:
inString
- the originalString
pattern
- the pattern to delete all occurrences of- Returns:
- the resulting
String
-
deleteAny
Delete any character in a givenString
.- Parameters:
inString
- the originalString
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
Quote the givenString
with single quotes.- Parameters:
str
- the inputString
(e.g. "myString")- Returns:
- the quoted
String
(e.g. "'myString'"), ornull
if the input wasnull
-
quoteIfString
Turn the given Object into aString
with single quotes if it is aString
; 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 aString
-
unqualify
Unqualify a string qualified by a '.' dot character. For example, "this.name.is.qualified", returns "qualified".- Parameters:
qualifiedName
- the qualified name
-
unqualify
Unqualify a string qualified by a separator character. For example, "this:name:is:qualified" returns "qualified" if using a ':' separator.- Parameters:
qualifiedName
- the qualified nameseparator
- the separator
-
capitalize
Capitalize aString
, changing the first letter to upper case as perCharacter.toUpperCase(char)
. No other letters are changed.- Parameters:
str
- theString
to capitalize- Returns:
- the capitalized
String
-
uncapitalize
Uncapitalize aString
, changing the first letter to lower case as perCharacter.toLowerCase(char)
. No other letters are changed.- Parameters:
str
- theString
to uncapitalize- Returns:
- the uncapitalized
String
-
getFilename
Extract the filename from the given Java resource path, e.g."mypath/myfile.txt" -> "myfile.txt"
.- Parameters:
path
- the file path (may benull
)- Returns:
- the extracted filename, or
null
if none
-
getFilenameExtension
Extract the filename extension from the given Java resource path, e.g. "mypath/myfile.txt" -> "txt".- Parameters:
path
- the file path (may benull
)- Returns:
- the extracted filename extension, or
null
if none
-
stripFilenameExtension
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
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
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
Compare two paths after normalization of them.- Parameters:
path1
- first path for comparisonpath2
- second path for comparison- Returns:
- whether the two paths are equivalent after normalization
-
uriDecode
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 Stringcharset
- the character set- Returns:
- the decoded value
- Throws:
IllegalArgumentException
- when the given source contains invalid encoded sequences- Since:
- 5.0
- See Also:
- Alphanumeric characters
-
parseLocale
Parse the givenString
value into aLocale
, accepting theLocale.toString()
format as well as BCP 47 language tags.- Parameters:
localeValue
- the locale value: following eitherLocale'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 byLocale.forLanguageTag(java.lang.String)
on Java 7+- Returns:
- a corresponding
Locale
instance, ornull
if none - Throws:
IllegalArgumentException
- in case of an invalid locale specification- Since:
- 5.0.4
- See Also:
-
parseLocaleString
Parse the givenString
representation into aLocale
.For many parsing scenarios, this is an inverse operation of
Locale's toString
, in a lenient sense. This method does not aim for strictLocale
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 localeString
: followingLocale's
toString()
format ("en", "en_UK", etc), also accepting spaces as separators (as an alternative to underscores)- Returns:
- a corresponding
Locale
instance, ornull
if none - Throws:
IllegalArgumentException
- in case of an invalid locale specification
-
toLanguageTag
Deprecated.as of 5.0.4, in favor ofLocale.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
Parse the giventimeZoneString
value into aTimeZone
.- Parameters:
timeZoneString
- the time zoneString
, followingTimeZone.getTimeZone(String)
but throwingIllegalArgumentException
in case of an invalid time zone specification- Returns:
- a corresponding
TimeZone
instance - Throws:
IllegalArgumentException
- in case of an invalid time zone specification
-
toStringArray
- Parameters:
collection
- theCollection
to copy (potentiallynull
or empty)- Returns:
- the resulting
String
array
-
toStringArray
- Parameters:
enumeration
- theEnumeration
to copy (potentiallynull
or empty)- Returns:
- the resulting
String
array
-
addStringToArray
Append the givenString
to the givenString
array, returning a new array consisting of the input array contents plus the givenString
.- Parameters:
array
- the array to append to (can benull
)str
- theString
to append- Returns:
- the new array (never
null
)
-
concatenateStringArrays
@Nullable public static String[] concatenateStringArrays(@Nullable String[] array1, @Nullable String[] array2) Concatenate the givenString
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 benull
)array2
- the second array (can benull
)- Returns:
- the new array (
null
if both given arrays werenull
)
-
mergeStringArrays
@Deprecated @Nullable public static String[] mergeStringArrays(@Nullable String[] array1, @Nullable String[] array2) Deprecated.as of 4.3.15, in favor of manual merging viaLinkedHashSet
(with every entry included at most once, even entries within the first array)Merge the givenString
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 benull
)array2
- the second array (can benull
)- Returns:
- the new array (
null
if both given arrays werenull
)
-
sortStringArray
Sort the givenString
array if necessary.- Parameters:
array
- the original array (potentially empty)- Returns:
- the array in sorted form (never
null
)
-
trimArrayElements
Trim the elements of the givenString
array, callingString.trim()
on each of them.- Parameters:
array
- the originalString
array (potentially empty)- Returns:
- the resulting array (of the same size) with trimmed elements
-
removeDuplicateStrings
Remove duplicate strings from the given array.As of 4.2, it preserves the original order, as it uses a
LinkedHashSet
.- Parameters:
array
- theString
array (potentially empty)- Returns:
- an array without duplicates, in natural sort order
-
split
Split aString
at the first occurrence of the delimiter. Does not include the delimiter in the result.- Parameters:
toSplit
- the string to split (potentiallynull
or empty)delimiter
- to split the string up with (potentiallynull
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 inputString
-
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. AProperties
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 processdelimiter
- to split each element using (typically the equals symbol)- Returns:
- a
Properties
instance representing the array contents, ornull
if the array to process wasnull
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. AProperties
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 processdelimiter
- 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), ornull
if no removal should occur- Returns:
- a
Properties
instance representing the array contents, ornull
if the array to process wasnull
or empty
-
tokenizeToStringArray
Tokenize the givenString
into aString
array via aStringTokenizer
.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 usingdelimitedListToStringArray(java.lang.String, java.lang.String)
.- Parameters:
str
- theString
to tokenize (potentiallynull
or empty)delimiters
- the delimiter characters, assembled as aString
(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 givenString
into aString
array via aStringTokenizer
.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 usingdelimitedListToStringArray(java.lang.String, java.lang.String)
.- Parameters:
str
- theString
to tokenize (potentiallynull
or empty)delimiters
- the delimiter characters, assembled as aString
(each of the characters is individually considered as a delimiter)trimTokens
- trim the tokens viaString.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
Take aString
that is a delimited list and convert it into aString
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 totokenizeToStringArray(java.lang.String, java.lang.String)
.- Parameters:
str
- the inputString
(potentiallynull
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 aString
that is a delimited list and convert it into aString
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 totokenizeToStringArray(java.lang.String, java.lang.String)
.- Parameters:
str
- the inputString
(potentiallynull
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 aString
- Returns:
- an array of the tokens in the list
- See Also:
-
commaDelimitedListToStringArray
将以逗号分隔的列表(例如,CSV文件中的一行)转换为字符串数组。 Convert a comma delimited list (e.g., a row from a CSV file) into an array of strings.- Parameters:
str
- the inputString
(potentiallynull
or empty)- Returns:
- an array of strings, or the empty array in case of empty input
-
commaDelimitedListToSet
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 inputString
(potentiallynull
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) - Parameters:
coll
- theCollection
to convert (potentiallynull
or empty)delim
- the delimiter to use (typically a ",")prefix
- theString
to start each element withsuffix
- theString
to end each element with- Returns:
- the delimited
String
-
collectionToDelimitedString
Convert aCollection
into a delimitedString
(e.g. CSV).Useful for
toString()
implementations.- Parameters:
coll
- theCollection
to convert (potentiallynull
or empty)delim
- the delimiter to use (typically a ",")- Returns:
- the delimited
String
-
collectionToCommaDelimitedString
Convert aCollection
into a delimitedString
(e.g., CSV).Useful for
toString()
implementations.- Parameters:
coll
- theCollection
to convert (potentiallynull
or empty)- Returns:
- the delimited
String
-
arrayToDelimitedString
Convert aString
array into a delimitedString
(e.g. CSV).Useful for
toString()
implementations.- Parameters:
arr
- the array to display (potentiallynull
or empty)delim
- the delimiter to use (typically a ",")- Returns:
- the delimited
String
-
arrayToCommaDelimitedString
Convert aString
array into a comma delimitedString
(i.e., CSV).Useful for
toString()
implementations.- Parameters:
arr
- the array to display (potentiallynull
or empty)- Returns:
- the delimited
String
-
getReader
获得StringReader- Parameters:
str
- 字符串- Returns:
- StringReader
-
getWriter
获得StringWriter- Returns:
- StringWriter
-
LinkedHashSet
(with every entry included at most once, even entries within the first array)