版权声明:本文为博主原创文章,同步今日头条号:Java云笔记。转载请附上博文链接: https://blog.csdn.net/weixin_44259720/article/details/87981755
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充。
StringUtils 类属于 package org.apache.commons.lang3 包,使用前需要导入该包。
StringUtils 的方法都是 null 安全的,即使输入参数 String 为 null 则不会抛出 NullPointerException ,并且它的内部做了相应处理,如果输入为 null 则返回也是 null 等,具体可以查看源代码。
StringUtils 类的方法都是 static 的,所以我们可以直接调用:StringUtils.xxx() 。
下面小编主要介绍一些常用方法:
一. 判断字符串是否为空
- public static boolean isBlank(String str) :字符串为空判断
依据:为空,为null,长度为0,或由空白符(whitespace)构成
StringUtils.isBlank(null); // true
StringUtils.isBlank(""); // true
StringUtils.isBlank(" "); // true
StringUtils.isBlank("\t \n \f \r"); // true(制表符、换行符、换页符、回车符)
StringUtils.isBlank("\b"); // false("\b"为单词边界符)
StringUtils.isBlank("aoc"); // false
StringUtils.isBlank(" aoc "); // false
- public static boolean isNotBlank(String str) :字符串不为空判断
依据: 等价于 !isBlank(String str)
StringUtils.isNotBlank(null); // false
StringUtils.isNotBlank(""); // false
StringUtils.isNotBlank(" "); // false
StringUtils.isNotBlank("\t \n \f \r"); // false
StringUtils.isNotBlank("\b"); // true
StringUtils.isNotBlank("aoc"); // true
StringUtils.isNotBlank(" aoc "); // true
- public static boolean isEmpty(String str) :字符串为空判断
依据: str==null 或 str.length()==0
StringUtils.isEmpty(null); // true
StringUtils.isEmpty(""); // true
StringUtils.isEmpty(" "); // false
StringUtils.isEmpty("aoc"); // false
StringUtils.isEmpty(" aoc "); // false
- public static boolean isNotEmpty(String str) :字符串不为空判断
依据: 等价于 !isEmpty(String str)
StringUtils.isNotEmpty(null); // false
StringUtils.isNotEmpty(""); // false
StringUtils.isNotEmpty(" "); // true
StringUtils.isNotEmpty("aoc"); // true
StringUtils.isNotEmpty(" aoc "); // true
- isAnyBlank( ) ,isAnyEmpty( ) ,isNoneBlank( ) ,isNoneEmpty( ) :字符串为空判断
用法:这四个方法是用于判断“多个”字符串是否为空!!
对于isAnyBlank和isAnyEmpty来说,只要有一个字符串为空,结果即为true;
对于isNoneBlank和isNoneEmpty,只要存在一个字符串为空,结果即为false;
StringUtils.isAnyBlank(null, "jack", "rose")); // true
StringUtils.isAnyBlank("titanic", "jack", "rose")); // false
StringUtils.isAnyEmpty("", "jack", "rose")); // true
StringUtils.isAnyEmpty(" ", "jack", "rose")); // false
StringUtils.isNoneBlank("titanic", "jack", "rose")); // true
StringUtils.isNoneBlank("", "jack", "rose")); // false
StringUtils.isNoneEmpty("titanic", "jack", "rose")); // true
StringUtils.isNoneEmpty(null, "jack", "rose")); // false
二. 去掉字符串两端的空白符
- public static String strip(String str) :
依据: 去掉字符串两端的空白符(whitespace) ,如果输入为 null 则返回 null
StringUtils.strip(null) = null
StringUtils.strip("") = ""
StringUtils.strip(" ") = ""
StringUtils.strip(" \b \t \n \f \r ") = "\b"
StringUtils.strip(" \n\taoc \b") = "ss \b"
StringUtils.strip(" a o cc ") = "a o cc"
StringUtils.strip("aoc ") = "aoc"
StringUtils.strip(" aoc ") = "aoc"
- public static String stripToNull(String str) :
依据: 去掉字符串两端的空白符(whitespace) ,如果变为 null 或"",则返回 null
StringUtils.stripToNull(null) = null
StringUtils.stripToNull("") = null
StringUtils.stripToNull(" ") = null
StringUtils.stripToNull(" \b \t \n \f \r ") = "\b"
StringUtils.stripToNull(" \n\taoc \b") = "aoc \b"
StringUtils.stripToNull(" a o cc ") = "a o cc"
StringUtils.stripToNull("aoc ") = "aoc"
StringUtils.stripToNull(" aoc ") = "aoc"
- public static String stripToEmpty(String str) :
依据: 去掉字符串两端的空白符(whitespace) ,如果变为 null 或"" ,则返回""
StringUtils.stripToNull(null) = ""
StringUtils.stripToNull("") = ""
StringUtils.stripToNull(" ") = ""
StringUtils.stripToNull(" \b \t \n \f \r ") = "\b"
StringUtils.stripToNull(" \n\taoc \b") = "aoc \b"
StringUtils.stripToNull(" a o cc ") = "a o cc"
StringUtils.stripToNull("aoc ") = "aoc"
StringUtils.stripToNull(" aoc ") = "aoc"
三. 去掉字符串两端的控制符
- public static String trim(String str) :
依据: 去掉字符串两端的控制符(control characters, char <= 32) , 如果输入为 null 则返回null
StringUtils.trim(null) = null
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim(" \b \t \n \f \r ") = ""
StringUtils.trim(" \n\taoc \b") = "aoc"
StringUtils.stripToNull(" a o cc ") = "a o cc"
StringUtils.stripToNull("aoc ") = "aoc"
StringUtils.stripToNull(" aoc ") = "aoc"
- public static String trimToNull(String str) :
依据: 去掉字符串两端的控制符(control characters, char <= 32) ,如果变为 null 或"",则返回 null
StringUtils.trim(null) = null
StringUtils.trim("") = null
StringUtils.trim(" ") = null
StringUtils.trim(" \b \t \n \f \r ") = null
StringUtils.trim(" \n\taoc \b") = "aoc"
StringUtils.stripToNull(" a o cc ") = "a o cc"
StringUtils.stripToNull("aoc ") = "aoc"
StringUtils.stripToNull(" aoc ") = "aoc"
- public static String trimToEmpty(String str) :
依据: 去掉字符串两端的控制符(control characters, char <= 32) ,如果变为 null 或 “” ,则返回 “”
StringUtils.trim(null) = ""
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim(" \b \t \n \f \r ") = ""
StringUtils.trim(" \n\taoc \b") = "aoc"
StringUtils.stripToNull(" a o cc ") = "a o cc"
StringUtils.stripToNull("aoc ") = "aoc"
StringUtils.stripToNull(" aoc ") = "aoc"
四. 查找
- indexOf():返回searchChar在字符串中第一次出现的位置,如果searchChar没有在字符串中出现,则返回-1
StringUtils.indexOf("sdfsfsfdsf","4"); // 结果是:-1
StringUtils.indexOf("sdfsfsfdsf","f"); // 结果是:2
- lastIndexOf():查找searchChar在字符串中最后一次出现的索引
StringUtils.lastIndexOf("aFkyk","k"); //结果是:4
StringUtils.lastIndexOf("aFkyk",""); //结果是:1
- indexOfIgnoreCase(),lastIndexOfIgnoreCase:用法同上,查找过程不区分大小写
五. 截取
- 利用下标,截取指定位置的字符串:
只指定了起始位置,则截取至字符串末尾;
指定了起始位置和结束位置,则从起始位置开始截取到结束位置(但不包含结束位置);
StringUtils.substring("china", 2); // 结果是:ina
StringUtils.substring("china", 2, 4); // 结果是:in
- 利用字符串,从分隔符第一次出现的位置向前截取:
StringUtils.substringBefore("chinachina", "i"); // 结果是:ch
- 利用字符串,从分隔符第一次出现的位置向后截取:
StringUtils.substringAfter("china","h")); // 结果是:ina
- 利用字符串,从分隔符最后一次出现的位置向前截取:
StringUtils.substringBeforeLast("chinachina", "i"); // 结果是:chinach
- 利用字符串,从分隔符最后一次出现的位置向后截取:
StringUtils.substringAfterLast("chinachina", "i"); // 结果是:na
- 利用字符串,截取指定标记字符串之间的字符序列:
StringUtils.substringBetween("tagabctag", "tag"); // 结果是:abc
六. 替换
- replace方法:替换单个字符或字符序列
StringUtils.replace("china", null, "z")); // china (此处被替换字符序列为null,因此替换会被忽略,返回原字符串)
StringUtils.replace("china", "c", null)); // china (此处替换字符序列为null,因此替换也被忽略,返回原字符串)
StringUtils.replace("china", "a", "ese")); // chinese
StringUtils.replace("china", "a", "")); // chin
- overlay方法:在指定位置进行字符序列替换
StringUtils.overlay("abcdef", "zzzz", 2, 4)); // abzzzzef
七. 移除
- 移除指定字符序列
StringUtils.remove("china", 'b')); // china (如果要移除的字符不存在,则返回原字符串)
StringUtils.remove("china", "in")); // cha
- 移除开头匹配的字符序列
StringUtils.removeStart("china", "ch")); // ina
StringUtils.removeStartIgnoreCase("china", "CHI")); // na (忽略大小写)
- 移除结尾匹配的字符序列
StringUtils.removeEnd("china", "na")); // chi
StringUtils.removeEndIgnoreCase("china", "NA")); // chi (忽略大小写)
- 移除字符串内的空白字符
StringUtils.deleteWhitespace(" c h i\tn\ra")); // china
八. 转换
- 字符串:大写转小写
StringUtils.lowerCase(null)); // null
StringUtils.lowerCase("CHINA")); // china (全部转换为小写)
StringUtils.lowerCase("CHINA", Locale.ENGLISH)); // china (按照指定转换规则转换为小写
- 字符串:小写转大写
StringUtils.upperCase(null)); // null
StringUtils.upperCase("china")); // CHINA (全部转为大写)
StringUtils.upperCase("china", Locale.ENGLISH)); // CHINA (按照指定规则转换为大写)
- 字符串:小写,大写互换
StringUtils.swapCase(null)); // null
StringUtils.swapCase("chINA")); // CHina
- 判断字符串是否全部是大写或小写(空或空白符均为false)
StringUtils.isAllUpperCase(" ")); // false
StringUtils.isAllUpperCase("CHINA")); // true:全为大写
StringUtils.isAllLowerCase("China")); // false
StringUtils.isAllLowerCase("china")); // true:全为小写
小结
- blank:代表的是空串("")、空白符(空格""," “,制表符”\t",回车符"\r","\n"等)以及null值;
- empty:代表的是空串("")和null值,不包含空白符;
- whitespace:包含空串("")和空白符,不包含null值。
更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务