工具包
lang3是Apache Commons 团队发布的工具包,要求jdk版本在1.5以上,相对于lang来说完全支持java5的特性,废除了一些旧的API。该版本无法兼容旧有版本,于是为了避免冲突改名为lang3
lang包可以说是废弃了,以后请不要使用。采用lang3直接代替即可
<!--常用工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
主要介绍其中的StringUtils工具类
1. isEmpty
@SpringBootTest
class DemotextApplicationTests {
@Test
void contextLoads() {
System.out.println(StringUtils.isEmpty(null));//true
System.out.println(StringUtils.isEmpty(""));//true
System.out.println(StringUtils.isEmpty(" "));//false
System.out.println(StringUtils.isEmpty("bob"));//false
System.out.println(StringUtils.isEmpty(" bob "));//false
}
}
2. isAnyEmpty任意一个参数为空的话,返回true。如果这些参数都不为空的话返回false。
** isNoneEmpty(CharSequence… css) 和isAnyEmpty取返**
@Test
void contextLoads() {
System.out.println(StringUtils.isAnyEmpty(null));//false
System.out.println(StringUtils.isAnyEmpty(null, "foo"));// true
System.out.println(StringUtils.isAnyEmpty("", "bar"));// true
System.out.println(StringUtils.isAnyEmpty("bob", ""));// true
System.out.println(StringUtils.isAnyEmpty(" bob ", null));// true
System.out.println(StringUtils.isAnyEmpty(" ", "bar"));// false
System.out.println(StringUtils.isAnyEmpty("foo", "bar"));// false
}
3. isBlank空白
@Test
void contextLoads() {
System.out.println(StringUtils.isBlank(null)); ;// true
System.out.println(StringUtils.isBlank("")); ; // true
System.out.println(StringUtils.isBlank(" ")); ;// true //注意此处是null哦 这和isEmpty不一样的
System.out.println(StringUtils.isBlank("bob"));//false
System.out.println(StringUtils.isBlank(" bob "));//false
}
isAnyBlank、isNoneBlank这里就不再解释了
4.trim(String str)
移除字符串两端的空字符串,制表符char <= 32如:\n \t 如果为null返回null
注意:移除的是两端,字符串中间的不会被移除,如果想要清除全部使用下面的8
@Test
void contextLoads() {
System.out.println(StringUtils.trim(null));//null
System.out.println(StringUtils.trim(""));//""
System.out.println(StringUtils.trim(" "));//""
System.out.println(StringUtils.trim("abc"));//abc
System.out.println(StringUtils.trim(" abc "));//abc
}
5. ordinalIndexOf字符串在另外一个字符串里,出现第Ordinal次的位置
@Test
void contextLoads() {
StringUtils.ordinalIndexOf("aabaabaa", "a", 1);// 0
StringUtils.ordinalIndexOf("aabaabaa", "a", 2);// 1
StringUtils.ordinalIndexOf("aabaabaa", "b", 1);// 2
StringUtils.ordinalIndexOf("aabaabaa", "b", 2);// 5
StringUtils.ordinalIndexOf("aabaabaa", "ab", 1);// 1
StringUtils.ordinalIndexOf("aabaabaa", "ab", 2);// 4
StringUtils.ordinalIndexOf("aabaabaa", "", 1);// 0 //空串永远访问0
StringUtils.ordinalIndexOf("aabaabaa", "", 2);// 0 //空串永远访问0
}
对应的有:lastOrdinalIndexOf方法
6.截取字符串
@Test
void contextLoads() {
//从左边开始截取指定个数
System.out.println(StringUtils.left("adsdfas", 2));//ad
//从右边开始截取指定个数
System.out.println(StringUtils.right("adsdfas", 2));//as
//从中间的指定位置开始截取 指定个数
System.out.println(StringUtils.mid("adsdfas", 2,2));//sd
}
substringBefore , substringAfter
String s = "123 I abc";
//从分隔符第一次出现的位置向前截取
System.out.println(StringUtils.substringBefore(s, " ")); //123
//从分隔符最后一次出现的位置向前截取:
System.out.println(StringUtils.substringBeforeLast(s, " "));//123 I
//从分隔符第一次出现的位置向后截取
System.out.println(StringUtils.substringAfter(s, " "));//I abc
//从分隔符最后一次出现的位置向后截取
System.out.println(StringUtils.substringAfterLast(s, " "));//abc
7.Join把集合合并指定字符串
默认使用空串Join
StringUtils.join(null) // null
StringUtils.join([]) // ""
StringUtils.join([null]) // ""
StringUtils.join(["a", "b", "c"]) // "abc"
StringUtils.join([null, "", "a"]) // "a"
自定义符号:特定字符串连接数组,很多情况下还是蛮实用,不用自己取拼字符串
StringUtils.join(null, *) // null
StringUtils.join([], *) // ""
StringUtils.join([null], *) // ""
StringUtils.join(["a", "b", "c"], ';') // "a;b;c"
StringUtils.join(["a", "b", "c"], null)// "abc"
StringUtils.join([null, "", "a"], ';') // ";;a" //注意这里和上面的区别
8.deleteWhitespace删除空格 这个方法还挺管用的。比trim给力
StringUtils.deleteWhitespace(null);// null
StringUtils.deleteWhitespace("");// ""
StringUtils.deleteWhitespace("abc");// "abc"
StringUtils.deleteWhitespace(" ab c ");// "abc"
9.removeStart删除以特定字符串开头的字符串,如果没有的话,就不删除。
StringUtils.removeStart(null, *);// null
StringUtils.removeStart("", *);// ""
StringUtils.removeStart( *, null);// *
StringUtils.removeStart("www.domain.com", "www.");// "domain.com"
StringUtils.removeStart("domain.com", "www.");// "domain.com"
StringUtils.removeStart("www.domain.com", "domain");// "www.domain.com" //注意这个结果哟 并没有删除任何东西
StringUtils.removeStart("abc", "");// "abc"
10.rightPad可以右边自动用指定的字符补全至指定长度
StringUtils.rightPad(null, *, *) ;// null
StringUtils.rightPad("", 3, 'z') ;// "zzz"
StringUtils.rightPad("bat", 3, 'z') ;// "bat"
StringUtils.rightPad("bat", 5, 'z') ;// "batzz"
StringUtils.rightPad("bat", 1, 'z') ;// "bat"
StringUtils.rightPad("bat", -1, 'z');// "bat
对应的:leftPad 左边自动补全
11. capitalize(String str)、uncapitalize 首字母大、小写
12.swapCase(String str) 大变小 小变大
StringUtils.swapCase(null) ;// null
StringUtils.swapCase("") ;// ""
StringUtils.swapCase("The dog has a BONE");// "tHE DOG HAS A bone"
13.isAlpha判断字符串是否全由字母组成 (只要存在汉字、中文、数字都为false)
StringUtils.isAlpha(null) ;// false
StringUtils.isAlpha("") ;// false
StringUtils.isAlpha(" ") ;// false
StringUtils.isAlpha("abc") ;// true
StringUtils.isAlpha("ab2c") ;// false
StringUtils.isAlpha("ab-c") ;//false
14.reverse字符串翻转
StringUtils.reverse(null) = null
StringUtils.reverse("") = ""
StringUtils.reverse("bat") = "tab"
15. abbreviate缩略字符串,省略号要占三位。maxWith小于3位会报错。
StringUtils.abbreviate(null, *) ;// null
StringUtils.abbreviate("", 4) ;// ""
StringUtils.abbreviate("abcdefg", 6) ;// "abc..."
StringUtils.abbreviate("abcdefg", 7) ;// "abcdefg"
StringUtils.abbreviate("abcdefg", 8) ;// "abcdefg"
StringUtils.abbreviate("abcdefg", 4) ;// "a..."
StringUtils.abbreviate("abcdefg", 3) ;// IllegalArgumentException
16.wrap包装,用后面的字符串对前面的字符串进行包装其实相当于前后拼了相同的串
StringUtils.wrap(null, *) ;// null
StringUtils.wrap("", *) ;// ""
StringUtils.wrap("ab", '\0') ;// "ab"
StringUtils.wrap("ab", 'x') ;// "xabx"
StringUtils.wrap("ab", '\'') ;// "'ab'"
StringUtils.wrap("\"ab\"", '\"') ;// "\"\"ab\"\""
17isAllBlank、isAllEmpty
这些都不解释了。处理数组可变参数而已
18isAllLowerCase、isAllUpperCase
判断字符串所有字符是否都是大、小写