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

在这里插入图片描述

前言

大家好,我是爷爷的茶七里香,最近整理了一份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的情况
String str1 = null;
System.out.println("str2 isEmpty->"+StringUtils.isEmpty(str1));
System.out.println("str2 isBlank->"+StringUtils.isBlank(str1));

// 不是空格的情况
String str2 = "";
System.out.println("str1 isEmpty->"+StringUtils.isEmpty(str2));
System.out.println("str1 isBlank->"+StringUtils.isBlank(str2));

// 空格的情况
String str3 = " ";
System.out.println("str2 isEmpty->"+StringUtils.isEmpty(str3));
System.out.println("str2 isBlank->"+StringUtils.isBlank(str3));

输出结果:

str1 isEmpty->true
str1 isBlank->true
str2 isEmpty->true
str2 isBlank->true
str3 isEmpty->false
str3 isBlank->true

区别:

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

在这里插入图片描述

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

// strip
String str2 = " 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【判断两个字符串是否相等】
String str1 = "abc";
String str2 = "abc";
System.out.println("两个字符串相同的情况:"+StringUtils.equals(str1,str2));
System.out.println("两个字符串相同的情况:"+StringUtils.compare(str1,str2));

String str3 = "abc";
String str4 = "cde";
System.out.println("两个字符串不同的情况:"+StringUtils.equals(str3,str4));
System.out.println("两个字符串不同的情况:"+StringUtils.compare(str3,str4));

输出结果:

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

区别:

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

在这里插入图片描述

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

输出结果:

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

在这里插入图片描述

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

输出结果:

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

在这里插入图片描述

indexOf/lastIndexOf/contains【判断是否包含指定字符】
String str1 = "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【任意一组字符串的索引】
String str1 = "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【字符串是否仅包含/无/这些字符中的任何一个】
String str1 = "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【指定索引/长度提取字符】
String str1 = "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【提取指定字符前/后/中的字符】
String str1 = "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");
String join = 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【字符串的删除操作】
String str1 = "abc";
System.out.println("删除字符串中的b字符:"+StringUtils.remove(str1, "b"));
System.out.println("除了b字符以外的都删除:"+StringUtils.deleteWhitespace("b"));

输出结果:

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

在这里插入图片描述

replace/overlay【搜索字符串,然后用另一个字符串替换】
String str1 = "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【删除字符串的最后一部分】
String str1 = "aabc";
System.out.println("删除最后一个字符:"+StringUtils.chop(str1));

输出结果:

删除最后一个字符:aab

在这里插入图片描述

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

输出结果:

添加jpg后缀:aabc.jpg

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

在这里插入图片描述

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

输出结果:

添加前缀:http://aabc

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

在这里插入图片描述

leftPad/rightPad/center/repeat【填充字符串】
String str1 = "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【更改字符串的大小写】
String str1 = "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【计算指定字符在另一个字符串中出现的次数】
String str1 = "aabCc";
System.out.println("出现a的次数:"+StringUtils.countMatches(str1,"a"));

输出结果:

出现a的次数:2

在这里插入图片描述

isAlpha/isNumeric/isWhitespace/isAsciiPrintable【检查字符串中的字符】
String str1 = "!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【防止输入字符串为空】
String str1 = null;
System.out.println("为null则设置指定的默认值:"+StringUtils.defaultString(str1,"a"));

输出结果:

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

在这里插入图片描述

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

输出结果:

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

在这里插入图片描述

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

输出结果:

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

在这里插入图片描述

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

输出结果:

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

注意:缩写指定长度必须是大于等于4!!!
在这里插入图片描述

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

输出结果:

差异值:tcd

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦境游子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值