当前位置:

org.apache.commons.lang3.StringUtils工具类使用

访客 2024-01-29 1118 0

前言

大家好,我是爷爷的茶七里香,最近整理了一份apache下的StringUtils工具类的使用,有不对的地方还请明确指出,万分感谢!

正文(官网文档)

序号方法解释例子1isEmpty/isBlank检查字符串是否为空查看2trim/strip去除字符串前后的空格查看3equals/compare比较两个字符串是否相等查看4startsWith检查字符串是否以指定字符开头查看5endsWith检查字符串是否以指定字符结尾查看6indexOf/lastIndexOf/contains判断是否包含指定字符查看7indexOfAny/lastIndexOfAny/indexOfAnyBut任意一组字符串的索引查看8containsOnly/containsNone/containsAny字符串是否仅包含/无/这些字符中的任何一个查看9substring/left/right/mid根据索引对字符串的提取查看10substringBefore/substringAfter/substringBetween提取指定字符前/后/中的字符查看11split/join将字符串拆分为字符串数组,反之拼接查看12remove/deleteWhitespace字符串的删除操作查看13replace/overlay搜索字符串,然后用另一个字符串替换查看14chop删除字符串的最后一部分查看15appendIfMissing如果不存在后缀,则在字符串的末尾附加一个后缀查看16prependIfMissing如果不存在前缀,则在字符串的开头添加前缀查看17leftPad/rightPad/center/repeat填充字符串查看18upperCase/lowerCase/swapCase/capitalize/uncapitalize更改字符串的大小写查看19countMatches计算指定字符在另一个字符串中出现的次数查看20isAlpha/isNumeric/isWhitespace/isAsciiPrintable检查字符串中的字符查看21defaultString防止输入字符串为空查看22rotate旋转(循环移位)字符串查看23reverse/reverseDelimited反转字符串查看24abbreviate字符串多余的省略号显示查看25difference比较字符串差异查看

isEmpty/isBlank【判断是否为空】
//null的情况Stringstr1=null;System.out.println("str2isEmpty->"StringUtils.isEmpty(str1));System.out.println("str2isBlank->"StringUtils.isBlank(str1));//不是空格的情况Stringstr2="";System.out.println("str1isEmpty->"StringUtils.isEmpty(str2));System.out.println("str1isBlank->"StringUtils.isBlank(str2));//空格的情况Stringstr3="";System.out.println("str2isEmpty->"StringUtils.isEmpty(str3));System.out.println("str2isBlank->"StringUtils.isBlank(str3));

输出结果:

str1isEmpty->true
str1isBlank->true
str2isEmpty->true
str2isBlank->true
str3isEmpty->false
str3isBlank->true

区别:

  • isEmpty方法判断空格的时候,认为这是不属于空值的!

trim/strip【去除字符串前后的空格】
//trimStringstr1="abc";System.out.println("使用trim去除前"str1"使用trim去除前");System.out.println("使用trim去除后"StringUtils.trim(str1)"使用trim去除后");//stripStringstr2="efg";System.out.println("使用strip去除前"str2"使用strip去除前");System.out.println("使用strip去除后"StringUtils.strip(str2)"使用strip去除后");

输出结果:

使用trim去除前abc使用trim去除前
使用trim去除后abc使用trim去除后
使用strip去除前efg使用strip去除前
使用strip去除后efg使用strip去除后

区别:

  • trim可以去除半角的空格;
  • strip既可以去除半角空格也可以去除全角空格;

equals/compare【判断两个字符串是否相等】
Stringstr1="abc";Stringstr2="abc";System.out.println("两个字符串相同的情况:"StringUtils.equals(str1,str2));System.out.println("两个字符串相同的情况:"StringUtils.compare(str1,str2));Stringstr3="abc";Stringstr4="cde";System.out.println("两个字符串不同的情况:"StringUtils.equals(str3,str4));System.out.println("两个字符串不同的情况:"StringUtils.compare(str3,str4));

输出结果:

两个字符串相同的情况:true
两个字符串相同的情况:0
两个字符串不同的情况:false
两个字符串不同的情况:-2

区别:

  • compare比较两个字符串相同的时候为0;
  • equals返回的是boolean类型;

startsWith【检查字符串是否以指定字符开头】
Stringstr1="abc";System.out.println("是否以s开头:"StringUtils.startsWith(str1,"s"));System.out.println("是否以a开头:"StringUtils.startsWith(str1,"a"));

输出结果:

是否以s开头:false
是否以a开头:true

endsWith【检查字符串是否以指定字符结尾】
Stringstr1="abc";System.out.println("是否以s结尾:"StringUtils.endsWith(str1,"s"));System.out.println("是否以c结尾:"StringUtils.endsWith(str1,"c"));

输出结果:

是否以s结尾:false
是否以c结尾:true

indexOf/lastIndexOf/contains【判断是否包含指定字符】
Stringstr1="abc";System.out.println("从左到右查找:"StringUtils.indexOf(str1,"a"));System.out.println("从右到左查找:"StringUtils.lastIndexOf(str1,"b"));System.out.println("是否包含指定字符:"StringUtils.contains(str1,"c"));

输出结果:

从左到右查找:0
从右到左查找:1
是否包含指定字符:true

区别:

  • indexOf是从左到右查找;
  • lastIndexOf是从右到左查找;
  • 以上两者都是找到指定字符就会返回该字符的下标,找不到就返回-1;
  • contains是查找是否包含指定字符返回boolean类型;

indexOfAny/lastIndexOfAny/indexOfAnyBut【任意一组字符串的索引】
Stringstr1="aabcabbb";System.out.println("最早出现字符a的下标:"StringUtils.indexOfAny(str1,"a"));System.out.println("最晚出现字符a的下标:"StringUtils.lastIndexOfAny(str1,"a"));System.out.println("以a开头的次数:"StringUtils.indexOfAnyBut(str1,"a"));
  • 输出结果:

最早出现字符a的下标:0
最晚出现字符a的下标:4
以a开头的次数:2

区别:

  • indexOfAny是最早出现指定字符的下标;
  • lastIndexOfAny则是最晚出现指定字符的下标;
  • indexOfAnyBut是以指定字符开头的次数;

containsOnly/containsNone/containsAny【字符串是否仅包含/无/这些字符中的任何一个】
Stringstr1="aabcabbb";System.out.println("aabcabbb是否仅包含a字符:"StringUtils.containsOnly(str1,"a"));System.out.println("aabcabbb是否没有a字符:"StringUtils.containsNone(str1,"a"));System.out.println("aabcabbb是否存在a字符:"StringUtils.containsAny(str1,"a"));

输出结果:

aabcabbb是否仅包含a字符:false
aabcabbb是否没有a字符:false
aabcabbb是否存在a字符:true

区别:

  • containsOnly的意思是判断是不是只有指定的字符;
  • containsNone的意思是判断没有指定的字符,如果没有指定字符的话为true,反之为false;
  • containsAny的意思是判断是否存在指定的字符;

substring/left/right/mid【指定索引/长度提取字符】
Stringstr1="abcdefg";System.out.println("从下标1开始提取字符:"StringUtils.substring(str1,1));System.out.println("从左到右提取长度为1的字符:"StringUtils.left(str1,1));System.out.println("从右到左提取长度1的字符:"StringUtils.right(str1,1));System.out.println("提取指定下标到指定长度的字符:"StringUtils.mid(str1,1,3));

输出结果:

从下标1开始提取字符:bcdefg
从左到右提取长度为1的字符:a
从右到左提取长度1的字符:g
提取指定下标到指定长度的字符:bcd

区别:

  • substring是从指定的下标位置开始提取字符;
  • left是从左边开始提取指定长度的字符;
  • right是从右边开始提取指定长度的字符;
  • mid是提取指定下标到指定长度的字符,例子中我指定了从下标1开始提取到长度为3的字符,例子中提取出来的是bcd;

substringBefore/substringAfter/substringBetween【提取指定字符前/后/中的字符】
Stringstr1="abcdefg";System.out.println("提取字符d之前的字符(不包含d):"StringUtils.substringBefore(str1,"d"));System.out.println("提取字符d之后的字符(不包含d):"StringUtils.substringAfter(str1,"d"));System.out.println("提取a到d之间的字符:"StringUtils.substringBetween(str1,"a","d"));

输出结果:

提取字符d之前的字符(不包含d):abc
提取字符d之后的字符(不包含d):efg
提取a到d之间的字符:bc

区别:

  • substringBefore提取指定字符前的字符串,不包含指定的字符;
  • substringAfter提取指定字符后的字符串,不包含指定的字符;
  • substringBetween提取指定两个字符之间的字符,不包含指定的字符;

split/join【将字符串拆分为字符串数组,反之拼接】
List<String>str1=Arrays.asList("a","b","c");Stringjoin=StringUtils.join(str1,"/");System.out.println("使用join指定斜杠拼接后的字符串:"join);String[]split=StringUtils.split(join,"/");System.out.println("使用split指定斜杠拆分后的字符串数组:"Arrays.toString(split));

输出结果:

使用join指定斜杠拼接后的字符串:a/b/c
使用split指定斜杠拆分后的字符串数组:[a,b,c]

区别:

  • join可以把数组或者是集合用指定的字符去进行拼接,这个方法在项目中很常用;
  • split可以把字符串以指定字符去进行拆分,返回的结果是一个字符串数组;

remove/deleteWhitespace【字符串的删除操作】
Stringstr1="abc";System.out.println("删除字符串中的b字符:"StringUtils.remove(str1,"b"));System.out.println("除了b字符以外的都删除:"StringUtils.deleteWhitespace("b"));

输出结果:

删除字符串中的b字符:ac
除了b字符以外的都删除:b

replace/overlay【搜索字符串,然后用另一个字符串替换】
Stringstr1="aabc";System.out.println("把b字符替换成中文二字:"StringUtils.replace(str1,"b","中文"));System.out.println("从下标0开始到下标1(不包含下标1),覆盖成b字符:"StringUtils.overlay(str1,"b",0,1));

输出结果:

把b字符替换成中文二字:aa中文c
从下标0开始到下标1(不包含下标1),覆盖成b字符:babc

chop【删除字符串的最后一部分】
Stringstr1="aabc";System.out.println("删除最后一个字符:"StringUtils.chop(str1));

输出结果:

删除最后一个字符:aab

appendIfMissing【如果不存在后缀,则在字符串的末尾附加一个后缀】
Stringstr1="aabc";System.out.println("添加jpg后缀:"StringUtils.appendIfMissing(str1,".jpg"));

输出结果:

添加jpg后缀:aabc.jpg

注意:当末尾不存在指定后缀才会进行添加,可以指定多个!

prependIfMissing【如果不存在前缀,则在字符串的开头添加前缀】
Stringstr1="aabc";System.out.println("添加前缀:"StringUtils.prependIfMissing(str1,"http://"));

输出结果:

添加前缀:http://aabc

注意:当开头不存在指定后缀才会进行添加,可以指定多个!

leftPad/rightPad/center/repeat【填充字符串】
Stringstr1="aabc";System.out.println("超过字符串长度的使用空格在开头填充:"StringUtils.leftPad(str1,6)"测试末尾有没有空格");System.out.println("超过字符串长度的使用空格在末尾填充:"StringUtils.rightPad(str1,6)"测试末尾有没有空格");System.out.println("超过字符串长度的使用空格在两侧填充:"StringUtils.center(str1,6)"测试末尾有没有空格");System.out.println("aabc被指定填充两次:"StringUtils.repeat(str1,2)"测试末尾有没有空格");

输出结果:

超过字符串长度的使用空格在开头填充:aabc测试末尾有没有空格
超过字符串长度的使用空格在末尾填充:aabc测试末尾有没有空格
超过字符串长度的使用空格在两侧填充:aabc测试末尾有没有空格
aabc被指定填充两次:aabcaabc测试末尾有没有空格

区别:

  • leftPad是在左侧使用空格填充,注意看例子中aabc的长度为4,但是我指定长度为6,多出来两个长度使用空格进行了填充;
  • rightPad在右侧进行的空格填充;
  • center在两侧进行的填充,保证字符在中间;
  • 在例子中的repeat无非就是复制了两次aabc,如果指定3次,那么就复制三次

upperCase/lowerCase/swapCase/capitalize/uncapitalize【更改字符串的大小写】
Stringstr1="aabCc";System.out.println("将字符串都转换成大写:"StringUtils.upperCase(str1));System.out.println("将字符串都转换成小写:"StringUtils.lowerCase(str1));System.out.println("大写的都转成小写,反之小写转大写:"StringUtils.swapCase(str1));System.out.println("首字母转大写:"StringUtils.capitalize(str1));System.out.println("首字母转小写:"StringUtils.uncapitalize(str1));

输出结果:

将字符串都转换成大写:AABCC
将字符串都转换成小写:aabcc
大写的都转成小写,反之小写转大写:AABcC
首字母转大写:AabCc
首字母转小写:aabCc

countMatches【计算指定字符在另一个字符串中出现的次数】
Stringstr1="aabCc";System.out.println("出现a的次数:"StringUtils.countMatches(str1,"a"));

输出结果:

出现a的次数:2

isAlpha/isNumeric/isWhitespace/isAsciiPrintable【检查字符串中的字符】
Stringstr1="!aabCc123";System.out.println("字符串是否都是字母:"StringUtils.isAlpha(str1));System.out.println("字符串是否都是数字:"StringUtils.isNumeric(str1));System.out.println("字符串是否是空格:"StringUtils.isWhitespace(str1));System.out.println("字符串是否是Ascii:"StringUtils.isAsciiPrintable(str1));

输出结果:

字符串是否都是字母:false
字符串是否都是数字:false
字符串是否是空格:false
字符串是否是Ascii:true

defaultString【防止输入字符串为空】
Stringstr1=null;System.out.println("为null则设置指定的默认值:"StringUtils.defaultString(str1,"a"));

输出结果:

为null则设置指定的默认值:a

rotate【旋转(循环移位)字符串】
Stringstr1="abc";System.out.println("原值:"str1);System.out.println("取末尾的两个字符进行旋转换位:"StringUtils.rotate(str1,2));

输出结果:

原值:abc
取末尾的两个字符进行旋转换位:bca

reverse/reverseDelimited【反转字符串】
Stringstr="abcdefg";System.out.println("原值:"str);System.out.println("反转后的值:"StringUtils.reverse(str));System.out.println("根据指定字符反转:"StringUtils.reverseDelimited(str,'c'));

输出结果:

原值:abcdefg
反转后的值:gfedcba
根据指定字符反转:defgcab

abbreviate【字符串多余的省略号显示】
Stringstr="abcdefg";System.out.println("原值:"str);System.out.println("缩写省略后面的值:"StringUtils.abbreviate(str,4));

输出结果:

原值:abcdefg
缩写省略后面的值:a…

注意:缩写指定长度必须是大于等于4!!!

difference【比较字符串差异】
Stringstr1="abcd";Stringstr2="atcd";System.out.println("差异值:"StringUtils.difference(str1,str2));

输出结果:

差异值:tcd

注意:这个比较差异跟我们所认为的不一样,起初我以为它是将两个字符串从第一个字符开始比较,然后将不一致的字符输出出来,但是使用后发现不是这样,它的确是从第一个字符开始比较,但是当遇到不一样的字符时,它就直接将后面的字符串直接输出了!!!

?原创不易,还希望各位大佬支持一下!
?点赞,你的认可是我创作的动力!
?收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~