apache commons StringUtils最全文档
StringUtils.split
分割字符串,作用同String对象的原生split方法
示例代码: String[] result =StringUtils.split("1,2,3,4,5",",")
StringUtils.replace
作用同String对象的原生replace方法
示例代码:String result = StringUtils.replace("hello excel","excel","world");
结果:hello world
Strings.isNullOrEmpty
判断字符串是否为空字符串(0长度字符串)或者null,是一个使用频率非常高的函数
示例代码:boolean result = Strings.isNullOrEmpty(str);
效果跟 string == null || string == "" 相当
StringUtils.isBlank
判断是否是空白字符串,null、""、" " 等没有实际内容的都属于空白字符串。和Strings.isNullOrEmpty不同,当字符段内容是空格时,如 " ",用Strings.isNullOrEmpty测试的结果是false,而StringUtils.isBlank测试的结果是true
StringUtils.isNotBlank
判断字符段是否为非空白,相当于 StringUtils.isBlank 取反
StringUtils.isAllBlank
判断一个或多个字符串是是否为空白
示例代码:
StringUtils.isAllBlank(new String[]{" ","",null}); //true
或
StringUtils.isAllBlank(null,""," ","张三"); //false
StringUtils.abbreviate
当字符串长度不确定,但使用的时候又不想他超过指定长度,就可以使用这个方法来截断
示例代码:
StringUtils.abbreviate("1234567890",9); 结果:123456...
StringUtils.abbreviate("1234567890",5); 结果:12…
应用场景: 需要将一段日志写入MySql,日志字段类型为varchar(1024),那么当日志长度大于1024时,写入会失败,此时我们可以使用这个函数处理过长的日志字符串
logContent = StringUtils.abbreviate(logContent,1024);
日志内容将被截断,超出部分用…代替
默认的省略字符是…,我们也可以自己指定,使用abbreviate的重载版本即可
StringUtils.abbreviate("1234567890","。。。",9); 结果123456。。。
注意: 默认情况下maxWidth参数不能小于4,否则会抛出异常。如果是自己指定省略符,那么省略符的长度必须小于maxWidth参数,否则也会抛出异常
StringUtils.abbreviateMiddle
作用与StringUtils.abbreviate相似,也是截断过长的字符串,不同点在于位置不同,StringUtils.abbreviateMiddle用省略符号代替的位置在整个字符串的中间
StringUtils.abbreviateMiddle("123456789","...",8);结果123...89
StringUtils.abbreviateMiddle("123456789","*",8);结果1234*789
生成的结果长度不大于length参数指定的值
StringUtils.appendIfMissing
如果字符串未出现指定的后缀,则追加后缀,否则返回原字符串
StringUtils.appendIfMissing("abc123","789"); 结果:abc123789
StringUtils.appendIfMissing("abc123","123");结果:abc123
此方法还有一个重载版本
appendIfMissing(final String str, final CharSequence suffix, final CharSequence... suffixes)
后缀可以指定多个,如果字符串的后缀在所有指定的后缀中未出现,则追加第一个后缀,否则返回原字符串
StringUtils.appendIfMissing("abc123","456","23","3");结果:abc123
StringUtils.appendIfMissing("abc123","456","x","xy");结果:abc123456
StringUtils.appendIfMissingIgnoreCase
StringUtils.appendIfMissing的忽略字母大小写版本
StringUtils.appendIfMissingIgnoreCase("abcdefg","EFG");结果:abcdefg
StringUtils.capitalize
将字符串的首字母转换成大写,这个函数的神奇之处在于可以转换一些特殊字符,比如dz,看起来是2个字符,其实却是一个,不信可以复制试试,看能不能复制其中一半。capitalize方法将这种字符分拆,并将其中首字母转成成大写
StringUtils.center
在字符串两边填充空格,并返回带空格的新字符串,新字符串长度等于size参数的长度
StringUtils.center("abc",10);结果:。。。abc。。。。(句号表示空格)
此方法还有重载版本,可以自己指定填充的字符串
StringUtils.center("abc",10,"-");结果:---abc----
StringUtils.leftPad
在字符串左侧填充空格:StringUtils.leftPad("abc",10);结果:。。。。。。。abc(句号表示空格)
此方法还有重载版本,可以自己指定填充的字符串
StringUtils.leftPad("abc",10,"-");结果:-------abc
StringUtils.rightPad
在字符串右侧填充空格: StringUtils.rightPad("abc",10);结果:abc。。。。。。。(句号表示空格)
此方法还有重载版本,可以自己指定填充的字符串
StringUtils.rightPad("abc",10,"-");结果:abc-------
StringUtils.chomp
切除字符串最后面的子字符串
StringUtils.chomp("abc123","123") = abc
StringUtils.chomp("abc123","1234") = abc123
此方法还有一个不带自定字符串的重载版本,用于去除字符串尾部的换行符
StringUtils.chomp("abc123\n\r") = abc123
StringUtils.chop
同 StringUtils.chomp
StringUtils.compare
比较字符串,作用同String自带的compareTo方法,并且有功能增强。第三个参数在字符串为null的i情况下决定返回正数还是负数
StringUtils.compare(null,"abc",true) = -1
StringUtils.compare(null,"abc",false) = 1
StringUtils.compare("abc",null,true) = 1
StringUtils.compare("abc",null,false) = -1
StringUtils.compareIgnoreCase
StringUtils.compare的忽略大小写版本
StringUtils.contains
检查字符串是否包含某个只字符串
StringUtils.containsAny
此方法有两个重载的版本,含义不同
boolean containsAny(final CharSequence cs, final CharSequence searchChars)
主字符串是否包含子字符串中任意的字符
StringUtils.containsAny("abc","ab")= true
StringUtils.containsAny("abc","ac") = true
StringUtils.containsAny("abc","ae") = true
StringUtils.containsAny("abc","de") = false
boolean containsAny(final CharSequence cs, final CharSequence... searchCharSequences)
主字符串是否包含指定的任意子字符串
StringUtils.containsAny("abc","ab","ef") = true
StringUtils.containsAny("abc","ad","ef") = false
StringUtils.containsAny("abc","ac","ef") = false
StringUtils.containsIgnoreCase
StringUtils.contains的忽略大小写版本
StringUtils.containsNone
此方法有两个重载版本
boolean containsNone(final CharSequence cs, final char... searchChars)
主字符串是否不包含所有自定的字符
StringUtils.containsNone("abc",'a','d','e','f') = false,因为存在a
StringUtils.containsNone("abc",'d','e','f') = true
boolean containsNone(final CharSequence cs, final String invalidChars)
主字符串是否不包含子字符串中任意字符
StringUtils.containsNone("abc","cd") = false,因为存在c
StringUtils.containsNone("abc","de") = true
StringUtils.containsOnly
左边字符串中的每一个字符必须出现在右边字符串中
StringUtils.containsOnly("abc","1a2b3c") = true
StringUtils.containsOnly("abc","1a2b3") = false
重载版本
boolean containsOnly(final CharSequence cs, final char... valid)
StringUtils.containsOnly("abc",'a','b','c','d') = true
StringUtils.containsOnly("abc",'a','b','d') = false
StringUtils.containsWhitespace
检测字符串中是否包含空白,包含回车和换行等空白符号
StringUtils.containsWhitespace("abc de") = true
StringUtils.containsWhitespace("abc\nde") =true
StringUtils.containsWhitespace("abc\rde") = true
StringUtils.containsWhitespace("abcde") = false
StringUtils.convertRemainingAccentCharacters
StringUtils.countMatches
子串在主串中出现的次数
StringUtils.countMatches("aabbcc",'a') = 2
StringUtils.countMatches("aabbcc","aa") = 1
StringUtils.defaultIfBlank
如果字符串为空白,则用一个默认字符串代替
StringUtils.defaultIfBlank(null,"123") = 123
StringUtils.defaultIfBlank("","123") = 123
StringUtils.defaultIfBlank(" ","123") = 123
StringUtils.defaultIfEmpty
如果字符串为空,则用默认字符串代替
StringUtils.defaultIfEmpty(null,"123") = 123
StringUtils.defaultIfEmpty("","123") = 123
StringUtils.defaultString
如果字符串为null,则返回一个默认字符串
StringUtils.defaultString("123") = 123
StringUtils.defaultString(null) = ""
StringUtils.defaultString(null,"456") = 456
StringUtils.deleteWhitespace
删除字符串中的空白
StringUtils.deleteWhitespace("1 23") = 123
StringUtils.difference
去除参数2字符串中与参数1字符串中相同的部分
StringUtils.difference("abc456","abc123") = 123
StringUtils.endsWith
主字符串是否以子字符串结尾
StringUtils.endsWith("abc456","456") = true
StringUtils.endsWith("abc456","1456") = false
StringUtils.endsWithAny
字符串是否以指定的一个或者多个字符串中的其中一个结尾
StringUtils.endsWithAny("abc456","1456","456") = true
StringUtils.endsWithAny("abc456","1456","2456") = false
StringUtils.endsWithIgnoreCase
StringUtils.endsWith的忽略大小写版本
StringUtils.equals
同String.equals方法的增强,可处理空字符串
StringUtils.equalsAny
指定多个对比的字符串,有一个与主字符串相等即可
StringUtils.equalsAny("abc","BC","abc") = true
StringUtils.equalsAnyIgnoreCase
StringUtils.equalsAny的忽略大小写版本
StringUtils.equalsIgnoreCase
StringUtils.equals的忽略大小写版本
StringUtils.firstNonBlank
获得一组字符串中第一个非空白的字符
StringUtils.firstNonBlank(" ","123","abc") = 123
StringUtils.firstNonEmpty
获得一组字符串中第一个非空字符
StringUtils.firstNonBlank(" ","123","abc") = 空白
StringUtils.firstNonBlank("123","abc")=123
StringUtils.getCommonPrefix
获得一组字符串公共部分的前缀
StringUtils.getCommonPrefix("abcd","abc","ab") = ab
StringUtils.getDigits
提取字符串中数值部分
StringUtils.getDigits("abc123def456") = 123456
StringUtils.indexOf
同String.indexOf
StringUtils.indexOfAny
指定的一组字符串中其中一个在主字符串中出现的位置
StringUtils.indexOfAny("abc123","abcd","123","bc") = 1
StringUtils.indexOfAnyBut
子字符串与主字符串不匹配部分的位置
StringUtils.indexOfAnyBut("abc123","abcdef") = 3
StringUtils.indexOfDifference
两个字符串不同部分的位置
StringUtils.indexOfDifference("123","124") = 2
StringUtils.indexOfIgnoreCase
StringUtils.indexOf的忽略大小写版本
StringUtils.isAllBlank
判断一组字符串是否都是空白
StringUtils.isAllBlank(null,""," ") = true
StringUtils.isAllEmpty
判断一组字符串是否都是空
StringUtils.isAllEmpty(null,"") = true
StringUtils.isAllLowerCase
判断字符串每个字符是否都是小写
StringUtils.isAllLowerCase("abc") = true
StringUtils.isAllLowerCase("abC") = false
StringUtils.isAllUpperCase
判断字符串的每个字符是否都是大写
StringUtils.isAllUpperCase("ABC") = true
StringUtils.isAllUpperCase("ABc") = false
StringUtils.isAlpha
判断字符串是否是字母(没有数字和特殊符号)
StringUtils.isAlphanumeric
判断字符串是否是字母和数字
StringUtils.isAlphanumericSpace
判读字符串是否是字母数字以及空白
StringUtils.isAlphaSpace
判读字符串是否是字母和空白
StringUtils.isAnyBlank
判断一组字符串中是否存在空白字符串
StringUtils.isAnyBlank("abc","123", " ") = true
StringUtils.isAnyBlank("abc","123") = false
StringUtils.isAnyEmpty
判断一组字符串中是否存在空字符串
StringUtils.isAnyEmpty("abc","123", "") = true
StringUtils.isAnyEmpty("abc","123", null) = true
StringUtils.isAnyEmpty("abc","123") = false
StringUtils.isAsciiPrintable
判断字符串中是否自有可打印的ascii码字符串
StringUtils.isAsciiPrintable("abc123") = true
StringUtils.isAsciiPrintable("abc123\n") = false ,换行符无法打印,所以结果为假
StringUtils.isMixedCase
字符串是否混合大小写
StringUtils.isNoneBlank
一组字符串中是否没有空白
StringUtils.isNoneBlank("123","abc"," ") = false
StringUtils.isNoneBlank("123","abc") = true
StringUtils.isNoneEmpty
一组字符串中是否没有空
StringUtils.isNoneBlank("123","abc","") = false
StringUtils.isNoneBlank("123","abc") = true
StringUtils.isNotBlank
是否不是空白字符串
StringUtils.isNotEmpty
是否不是空字符串
StringUtils.isNumeric
字符串是否是数字
StringUtils.isNumericSpace
字符串是否是数字和空格
StringUtils.isWhitespace
字符串是否是空白,不包括null
StringUtils.isWhitespace(null) = false
StringUtils.isWhitespace("") = true
StringUtils.isWhitespace(" ") = true
StringUtils.isWhitespace("abc") =false
StringUtils.join
功能同jdk自带String.join,只是它有针对其他各种类型重载,而String.join只支持字符串类型
StringUtils.lastIndexOf
搜索的字符串最后一次在被搜索字符串中出现的位置
StringUtils.lastIndexOf("abcc","c") = 3;
而
StringUtils.indexOf("abcc","c")=2
StringUtils.lastIndexOfAny
任意一个字符串在被搜索字符串中出现的位置
StringUtils.lastIndexOfAny("abcc","a","b","c","d","d") = 3
StringUtils.lastIndexOfIgnoreCase
StringUtils.lastIndexOf的忽略大小写版本
StringUtils.lastOrdinalIndexOf
从后往前匹配,第N次出现被匹配字符串的位置,N为方法的第三个参数
StringUtils.lastOrdinalIndexOf("abcabcabc","c",1) = 8
StringUtils.lastOrdinalIndexOf("abcabcabc","c",2 = 5
StringUtils.lastOrdinalIndexOf("abcabcabc","c",3) = 3
StringUtils.lastOrdinalIndexOf("abcabcabc","c",4) = -1
StringUtils.lastOrdinalIndexOf("abcabcabc","c",0) = -1
StringUtils.left
截取字符串左侧指定长度的字符串
StringUtils.left("abc123",3) = 3
StringUtils.length
获得字符串长度
StringUtils.lowerCase
将字符串中字母转换成小写
StringUtils.mid
截取字符串某一部分
StringUtils.mid("abc123",2,3) = c12
StringUtils.normalizeSpace
去除字符串中多余的空白符,只保留一个
StringUtils.normalizeSpace("abc 1 2 3") = abc 1 2 3
StringUtils.ordinalIndexOf
从前往后匹配,第N次出现被匹配字符串的位置,N为方法的第三个参数
StringUtils.ordinalIndexOf("abcabcabc","c",1) = 2
StringUtils.ordinalIndexOf("abcabcabc","c",2) = 5
StringUtils.ordinalIndexOf("abcabcabc","c",3) = 8
StringUtils.ordinalIndexOf("abcabcabc","c",4) = -1
StringUtils.ordinalIndexOf("abcabcabc","c",0) = -1
StringUtils.overlay
覆盖字符串中指定位置的子串
StringUtils.overlay("abcabcabc","123",1,2) =a123cabcabc
StringUtils.prependIfMissing
如果字符串未出现指定的前缀,则追加前缀,否则返回原字符串
("abc","123") = 123abc
StringUtils.prependIfMissing("abc","ab") = abc
此方法还有一个重载版本
prependIfMissing(final String str, final CharSequence suffix, final CharSequence... suffixes)
前缀可以指定多个,如果字符串的前缀在所有指定的前缀中未出现,则追加第一个前缀,否则返回原字符串
StringUtils.prependIfMissing("abc123","123","abc","bc") = abc123
StringUtils.prependIfMissing("abc123","123","c","bc")=123abc123
StringUtils.prependIfMissingIgnoreCase
StringUtils.prependIfMissing的忽略大小写版本
StringUtils.remove
删除字符串的某一部分
StringUtils.remove("abc123","123") = abc
StringUtils.removeEnd
删除字符串结尾部分子串
StringUtils.removeEnd("123abc","abc") = 123
StringUtils.removeEndIgnoreCase
StringUtils.removeEnd的忽略大小写版本
StringUtils.removeIgnoreCase
StringUtils.remove的忽略大小写版本
StringUtils.removeStart
删除字符串开头部分子串
StringUtils.removeStart("abc123","abc") = 123
StringUtils.removeStartIgnoreCase
StringUtils.removeStart的忽略大小写部分
StringUtils.repeat
重复字符串
StringUtils.repeat("abc",5) = abcabcabcabcabc
StringUtils.replace
搜索替换字符串
StringUtils.replace("abc123","abc","123") = 123123
其中有两个重载版本可以设定替换的次数和是否忽略大小写
String replace(final String text, final String searchString, final String replacement, final int max)
String replace(final String text, String searchString, final String replacement, int max, final boolean ignoreCase)
StringUtils.replaceChars
StringUtils.replace的单字符版本
StringUtils.replaceEach
批量替换,被替换元素个数必须等于替换的元素个数
StringUtils.replaceEach("abc123",new String[]{"a","b","c"},new String[]{"d","e","f"}) = def123
StringUtils.replaceEachRepeatedly
对替换的结果再次执行替换
比如
StringUtils.replaceEach("abc123",new String[]{"abc","123"},new String[]{"123","1"}) = 1231
但是出来的结果还是符合替换要求,因此还要再次执行替换操作,这个时候就可以使用StringUtils.replaceEachRepeatedly,它会重复执行替换操作,直到结果不满足替换条件为止。如果替换操作是个死循环,此方法会抛出异常
StringUtils.replaceEachRepeatedly("abc123",new String[]{"abc","123"},new String[]{"123","1"}) = 11
StringUtils.replaceIgnoreCase
StringUtils.replace的忽略大小写版本
StringUtils.replaceOnce
只替换一次
StringUtils.replaceOnce("aaa","a","b") = baa
StringUtils.replaceOnceIgnoreCase
StringUtils.replaceOnce的忽略大小写版本
StringUtils.reverse
反转字符串 StringUtils.reverse("abc") = cba
StringUtils.reverseDelimited
以分隔符分割出来的元素为单位进行反转
StringUtils.reverse("a,b,cd") = dc,b,a
StringUtils.reverseDelimited("a,b,cd",',') = cd,b,a
StringUtils.right
从字符串右边截取指定长度的子字符串
StringUtils.right("abc",2) = bc
StringUtils.rotate
将字符串最后的一个字符提前
StringUtils.rotate("abc",1) = cab
StringUtils.rotate("abc",2) = bca
StringUtils.rotate("abc",3) = abc
StringUtils.splitByCharacterType
按字符类型对字符串进行分割,字母归字母,数字归数字,特殊字符归特殊字符
StringUtils.splitByCharacterType("ABCabc123#$%你好") = [ABC, abc, 123, #, $, %, 你好]
StringUtils.splitByCharacterTypeCamelCase
按字符类型对字符串进行分割,但是是带驼峰的
StringUtils.splitByCharacterTypeCamelCase("ABCabc123#$%你好") = [AB, Cabc, 123, #, $, %, 你好]
StringUtils.splitByWholeSeparator
分割结果会忽略中间的空字符,保留尾部的空字符
StringUtils.splitByWholeSeparator("a,b,c,,d,e,",",") = [a, b, c, d, e, ]
StringUtils.splitByWholeSeparatorPreserveAllTokens
StringUtils.splitByWholeSeparatorPreserveAllTokens("a,b,c,,d,e,",",") =[a, b, c, , d, e, ]
分割结果既保留中间的空字符,也保留结尾的空字符
StringUtils.splitPreserveAllTokens
作用似乎与StringUtils.splitByWholeSeparatorPreserveAllTokens一样(不确定)
StringUtils.startsWith
字符串是否有指定的前缀
StringUtils.startsWith("abc","ab") = true
StringUtils.startsWith("abc","ac") = false
StringUtils.startsWithAny
字符串前缀是否是指定的多个前缀中的其中一个
StringUtils.startsWithAny("abc","ac","be","a") = true
StringUtils.startsWithIgnoreCase
StringUtils.startsWith的忽略大小写版本
StringUtils.strip
去除字符串两边的字符串,要去除的字符串可自己设定
StringUtils.strip("[abc]","[]") = abc
StringUtils.stripStart
去除字符串左边的字符串
StringUtils.stripStart("[abc]","[]") = abc]
StringUtils.stripEnd
去除字符串右边的字符串
StringUtils.stripEnd("[abc]","[]") = [abc
StringUtils.stripAccents
替换字符串中的音调字符
StringUtils.stripAccents("ààà") = aaa
StringUtils.stripAll
批量去除两侧指定的字符串
StringUtils.stripAll(new String[]{"[aaa]","[bbb]"},"[]") = [aaa, bbb]
StringUtils.stripToEmpty
如果传入的参数为null,则返回空字符,其余功能和strip一致
StringUtils.stripToNull
无论是传入空字符还是null,统一返回null,其余功能和strip一致
StringUtils.substring
截取字符串指定位置的部分
StringUtils.substringAfter
获取分隔符的之后部分的字符串
StringUtils.substringAfter("aa,cc,dd",",") = cc,dd
StringUtils.substringAfterLast
获取最后一个分隔符之后的字符串
StringUtils.substringAfterLast("aa,cc,dd",",") = dd
StringUtils.substringBefore
获取分隔符的之前部分的字符串
StringUtils.substringBeforeLast
获取最后一个分隔符之前部分的字符串
StringUtils.substringBeforeLast("aa,cc,dd",",") = aa,cc
StringUtils.substringBetween
获得两个分隔符中间方部分字符串
StringUtils.substringBetween("aa,bb,cc,dd","aa","dd") = ,bb,cc,
StringUtils.swapCase
将字符串中小写字符转换成大写,大写字符串转换成小写
StringUtils.swapCase("AbCdEfG") = aBcDeFg
StringUtils.toCodePoints
将字符串的每个字符转换成10进制的unicode码
StringUtils.toCodePoints("AbCdEfG我") = [65,98,67,100,69,102,71,25105]
StringUtils.toEncodedString
建字节数字转换成字符串
StringUtils.toEncodedString("abc你好".getBytes("gbk"), Charset.forName("gbk")) = abc你好
StringUtils.toRootLowerCase
将字符串转换成根语言环境的小写状态
StringUtils.toRootUpperCase
将字符串转换成根语言环境的大写状态
StringUtils.trim
去除字符串两边的空白
StringUtils.trimToEmpty
去除字符串两边的空白,如果字符串为null,则返回空字符
StringUtils.trimToNull
去除字符串两边的空白,如果字符串为空字符和null,则返回null
StringUtils.truncate
截取字符串
StringUtils.truncate("12345",3) = 123
StringUtils.truncate("12345",2,3) = 345
StringUtils.uncapitalize
首字母小写
StringUtils.uncapitalize("X123ABC") = x123ABC
StringUtils.unwrap
去除字符串两边的字符
StringUtils.unwrap("|abc123|",'|') = abc123
StringUtils.unwrap("||abc123||","||") = abc123
StringUtils.upperCase
大写转换
StringUtils.wrap
有指定字符串填充字符串两边
StringUtils.wrap("abc","#") = #abc#
StringUtils.wrapIfMissing
如果指定的字符串不存在,则用这个字符串填充字符串的两边
StringUtils.wrapIfMissing("#abc","#") = #abc#