1.StringUtils简介
StringUtils
是org.apache.commons.lang
包中的一个工具类,提供了130多个静态方法(static)操作String类型。并且StringUtils对于null是安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理。
使用时需要先添加maven依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
此处用的依赖版本是3.11,最新版本可以在maven中央仓库查询
https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
2.StringUtils常用方法
1. public static boolean isEmpty(String str)
判断某字符串是否为空,为空的标准是str == null 或 str.length() == 0
StringUtils.isEmpty(null); //null,结果为true
StringUtils.isEmpty(""); //""中什么也不写,结果为true
StringUtils.isEmpty(" "); //" "中间是空格,结果为false
StringUtils.isEmpty("aaa"); //正常字符串,结果为false
2. public static boolean isNotEmpty(String str)
判断某字符串是否非空,等于!isEmpty(String str)
StringUtils.isNotEmpty(null); //null结果为false
StringUtils.isNotEmpty(""); //""中什么也不写,结果为false
StringUtils.isNotEmpty(" "); //" "中间是空格,结果为true
StringUtils.isNotEmpty("bob"); //正常字符串,结果为true
3. public static boolean isBlank(String str)
判断某字符串是否为空或长度为0或由空白符(whitespace)空格构成,与isEmpty区别就是 字符串内容是空格
返回值也是true
StringUtils.isBlank(null); //true
StringUtils.isBlank(""); //true
StringUtils.isBlank(" "); //true
StringUtils.isBlank(" "); //true
StringUtils.isBlank("\t \n \f \r"); //true
StringUtils.isBlank("aaa"); //false
4. public static boolean isNotBlank(String str)
判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成,
等于!isBlank(String str)
5. public static String trim(String str)
用于删除字符串的头尾空白符
StringUtils.trim(null); //结果:null
StringUtils.trim(""); //结果:
StringUtils.trim(" "); //结果:
StringUtils.trim(" \b \t \n \f \r "); //结果:
StringUtils.trim(" \n\tss \b"); //结果:ss
StringUtils.trim(" d d dd "); //结果:d d dd
StringUtils.trim("dd "); //结果:dd
StringUtils.trim(" dd "); //结果:dd
6. public static String trimToNull(String str)
去掉字符串两端的控制符(除去ASCII码中127号)和空格;
与trim区别在于:如果字符串去掉空白符或制表符之后,结果变为null或"",则返回null。
控制符:在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。
空格:ASCII码的编号为32
7.public static String trimToEmpty(String str)
去掉字符串两端的控制符和空格;
与trim区别在于:如果字符串去掉空白符或制表符之后,结果变为null或"",则返回""。
8. public static boolean equals(String str1, String str2)
比较两个字符串是否相等,如果两个均为空则也认为相等。
StringUtils.equals(" ", " "); //两个字符串都是相等数量空格。true
StringUtils.equals(" ", " ");//两个字符串都是空格,但空格数量不等。false
StringUtils.equals(null,null); //两个字符串都是null。true
StringUtils.equals(" ",null); //一个字符串为空,一个字符串为null。false
9. public static boolean equalsIgnoreCase(String str1, String str2)
比较两个字符串是否相等,不区分大小写,如果两个均为空则也认为相等(同equals方法)。
10. public static int indexOf(String str, char c)
返回字符c在字符串str中第一次出现的位置。(下标从0开始)
如果c没有在str中出现则返回-1。
11. public static int indexOf(String str, char c, int startPos)
返回字符c从startPos开始在字符串str中第一次出现的位置。(下标从0开始)
如果从startPos开始c没有在str中出现则返回-1,
如果str为null或"",则也返回-1
12. public static int indexOf(String str, String searchStr)
返回字符串searchStr在字符串str中第一次出现的位置。
如果str为null或searchStr为null则返回-1,
如果searchStr为"",且str为不为null,则返回0。
13. public static int IndexOf(String str, String searchStr, int startPos)
返回字符串searchStr从startPos开始在字符串str中第一次出现的位置。(下标从0开始)
如果 str=null 或 searchStr=null 则返回-1。
System.out.println(StringUtils.indexOf("aabb", null,1)); //-1
System.out.println(StringUtils.indexOf(null, "aa",1)); //-1
System.out.println(StringUtils.indexOf("aabbccdd", "cc",1)); //4
14. public static int ordinalIndexOf(String str, String searchStr, int ordinal)
返回字符串searchStr在字符串str中第ordinal次出现的位置。
如果str=null或searchStr=null或ordinal<=0则返回-1
15. public static int lastIndexOf(String str, char c)
字符c在字符串str中最后一次出现的下标(具体用法同indexOf方法)
16. public static boolean contains(String str, char searchChar)
判断字符串str中是否包含字符searchChar。
如果str为null或"",返回false;
如果searchChar不在str中,返回false。
17. public static boolean contains(String str, String searchStr)
判断字符串str中是否包含字符串searchStr。
如果searchChar不在str中,返回false。
StringUtils.contains("", ""); //true
StringUtils.contains("dfg", ""); //true
StringUtils.contains("dfg", "d"); //true
18. public static boolean containsIgnoreCase(String str, String searchStr)
判断字符串str是否包含字符串searchStr,不区分大小写。
19. public static int indexOfAny(String str, Char … searchChar )
找出字符searchChars中的r任何字符第一次出现在字符串str中的位置。
如果字符数组中的字符都不在字符串中,则返回-1
如果字符串为null或"",则返回-1
StringUtils.indexOfAny("sdfdadad", "d", "a"); //1
20. public static String substring(String str, int startPos)
得到字符串str的子串。
如果startPos小于0,子串取逆序的前|startPos|位
如果str为null或"",则返回它本身
StringUtils.substring("aaabbbcccddd", 3); //bbbcccddd
StringUtils.substring("aaabbbcccddd", -3); //ddd
StringUtils.substring("", 3); //
StringUtils.substring(null, 3); //null
21. public static String substring(String str, int start, int end)
得到字符串str的子串。
如果str为null或"",则返回它本身
22.public static String[ ] split(String str)
把字符串拆分成一个字符串数组,用空格(whitespace)作为分隔符。
如果字符串为null,返回null
如果字符串为"",返回空数组{}
// 打印结果为ab cd efg ,数组a为{ab,cd,ef}
String[] arrs = StringUtils.split("ab cd efg");
for (String a : arrs) {
System.out.print(a+" ");
}
23.public static String[ ] split(String str, char separatorChar)
把字符串拆分成一个字符串数组,用指定的字符separatorChar作为分隔符。(结果字符串数组把separatorChar丢掉)
如果字符串为null,返回null
如果字符串为"",返回空数组{}
// 打印结果为aa bb cc
String[] arrs02 = StringUtils.split("aaybbyccy",'y');
for (String a : arrs02) {
System.out.print(a+"");
}
24. public static String[ ] split(String str, String separatorChars)
把字符串拆分成一个字符串数组,用指定的字符串separatorChars作为分隔符。
如果字符串str为null,返回null
如果字符串str为"",返回空数组{}
如果separatorChars为null,则默认为空白符
// 打印结果为aa bb cc
String[] arrs03 = StringUtils.split("aayybbyyccy","yy");
for (String a : arrs03) {
System.out.print(a+" ");
}
25. public static String join(Object[ ] array)
把数组中的元素连接成一个字符串返回。
// 打印结果:asdfsdw32e
System.out.println(StringUtils.join('a', "sdfsd", "w32e"));
26. public static String join(Object[ ] array, char separator)
把数组中的元素连接成一个字符串返回,把分隔符separator也加上。
// 打印结果:a bb ccc
Object[] obj = {'a',"bb","ccc"};
System.out.println(StringUtils.join(obj," "));
27. public static String replace(String text, String searchString, String replacement)
在字符串text中用replacement代替searchString,替换所有。
// 结果bbbbbb
StringUtils.replace("aaabbb", "a", "b");
// 结果aaabbb;searchSting在字符串中不存在,则不替换
StringUtils.replace("aaabbb", "f", "b");
28. public static String repeat(String str, int repeat)
重复字符串repeat次,组合成一个新串返回。
如果字符串str为null或"",则返回它本身
如果repeat小于0,则返回"".
// 结果abcabcabc
System.out.println(StringUtils.repeat("abc", 3));
29. public static String swapCase(String str)
把字符串中的字符大写转换为小写,小写转换为大写。
// 结果AAABBBaaabbb
System.out.println(StringUtils.swapCase("aaabbbAAABBB"));
30. public static int countMatches(String str, String sub)
计算字符串sub在字符串str中出现的次数。
如果str为null或"",则返回0
// 结果 2
System.out.println(StringUtils.countMatches("aaaa", "aa"));