StringUtils字符串工具类的常用方法
一、StringUtils是什么
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。
除了构造器,StringUtils 中一共有130多个方法,并且都是 static 的,所以我们可以这样调用 StringUtils.xxx()
二、前提条件
引入apache commons-lang3 jar包
如果是maven工程pom.xml添加lang3包依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
三、常用方法介绍
下面分别对一些常用方法做简要介绍:
1、字符串判空
-
public static boolean isEmpty(String str)
判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
下面是 StringUtils 判断是否为空的示例:StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空处理 StringUtils.isEmpty(" ") = false StringUtils.isEmpty("bob") = false StringUtils.isEmpty(" bob ") = false
-
public static boolean isNotEmpty(String str)
判断某字符串是否非空,等于 !isEmpty(String str)
下面是示例:StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty("") = false StringUtils.isNotEmpty(" ") = true StringUtils.isNotEmpty(" ") = true StringUtils.isNotEmpty("bob") = true StringUtils.isNotEmpty(" bob ") = true
-
public static boolean isBlank(String str)
判断某字符串是否为空或长度为0或由空白符(whitespace) 构成
下面是示例:
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("/t /n /f /r") = true //对于制表符、换行符、换页符和回车符StringUtils.isBlank() //均识为空白符 StringUtils.isBlank("/b") = false //"/b"为单词边界符 StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false
-
public static boolean isNotBlank(String str)
判断某字符串是否不为空且长度不为0且不由空白符(whitespace) 构成,等于 !isBlank(String str)
下面是示例:StringUtils.isNotBlank(null) = false StringUtils.isNotBlank("") = false StringUtils.isNotBlank(" ") = false StringUtils.isNotBlank(" ") = false StringUtils.isNotBlank("/t /n /f /r") = false StringUtils.isNotBlank("/b") = true StringUtils.isNotBlank("bob") = true StringUtils.isNotBlank(" bob ") = true
2、字符串去空
-
public static String trim(String str)
去掉字符串两端的控制符(control characters, char <= 32) , 如果输入为 null 则返回null
控制符就是用于打印和显示控制、数据结构化、传输控制、以及其他零散用途的特殊符号。如/t /f whitespace 等制表符、换行符、换页符和回车符
下面是示例: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"
-
public static String trimToNull(String str)
去掉字符串两端的控制符(control characters, char <= 32) ,如果变为 null 或"",则返回 null
下面是示例:StringUtils.trimToNull(null) = null StringUtils.trimToNull("") = null StringUtils.trimToNull(" ") = null StringUtils.trimToNull(" /b /t /n /f /r ") = null StringUtils.trimToNull(" /n/tss /b") = "ss" StringUtils.trimToNull(" d d dd ") = "d d dd" StringUtils.trimToNull("dd ") = "dd" StringUtils.trimToNull(" dd ") = "dd"
-
public static String trimToEmpty(String str)
去掉字符串两端的控制符(control characters, char <= 32) ,如果变为 null 或 "" ,则返回 ""
下面是示例:StringUtils.trimToEmpty(null) = "" StringUtils.trimToEmpty("") = "" StringUtils.trimToEmpty(" ") = "" StringUtils.trimToEmpty(" /b /t /n /f /r ") = "" StringUtils.trimToEmpty(" /n/tss /b") = "ss" StringUtils.trimToEmpty(" d d dd ") = "d d dd" StringUtils.trimToEmpty("dd ") = "dd" StringUtils.trimToEmpty(" dd ") = "dd"
-
public static String strip(String str)
去掉字符串两端的空白符(whitespace) ,如果输入为 null 则返回 null
下面是示例(注意和 trim() 的区别):StringUtils.strip(null) = null StringUtils.strip("") = "" StringUtils.strip(" ") = "" StringUtils.strip(" /b /t /n /f /r ") = "/b" StringUtils.strip(" /n/tss /b") = "ss /b" StringUtils.strip(" d d dd ") = "d d dd" StringUtils.strip("dd ") = "dd" StringUtils.strip(" dd ") = "dd"
-
public static String stripToNull(String str)
去掉字符串两端的空白符(whitespace) ,如果变为 null 或"",则返回 null
下面是示例(注意和 trimToNull() 的区别):StringUtils.stripToNull(null) = null StringUtils.stripToNull("") = null StringUtils.stripToNull(" ") = null StringUtils.stripToNull(" /b /t /n /f /r ") = "/b" StringUtils.stripToNull(" /n/tss /b") = "ss /b" StringUtils.stripToNull(" d d dd ") = "d d dd" StringUtils.stripToNull("dd ") = "dd" StringUtils.stripToNull(" dd ") = "dd"
-
public static String stripToEmpty(String str)
去掉字符串两端的空白符(whitespace) ,如果变为 null 或"" ,则返回""
下面是示例(注意和 trimToEmpty() 的区别):StringUtils.stripToNull(null) = "" StringUtils.stripToNull("") = "" StringUtils.stripToNull(" ") = "" StringUtils.stripToNull(" /b /t /n /f /r ") = "/b" StringUtils.stripToNull(" /n/tss /b") = "ss /b" StringUtils.stripToNull(" d d dd ") = "d d dd" StringUtils.stripToNull("dd ") = "dd" StringUtils.stripToNull(" dd ") = "dd"
以下方法只介绍其功能,不再举例:
-
public static String strip(String str, String stripChars)
去掉 str 两端的在 stripChars 中的字符。 如果 str 为 null 或等于"" ,则返回它本身; 如果 stripChars 为 null 或"" ,则返回 strip(String str) 。
-
public static String stripStart(String str, String stripChars)
和11相似,去掉 str 前端的在 stripChars 中的字符。
-
public static String stripEnd(String str, String stripChars)
和11相似,去掉 str 末端的在 stripChars 中的字符。 -
public static String[] stripAll(String[] strs)
对字符串数组中的每个字符串进行 strip(String str) ,然后返回。 如果 strs 为 null 或 strs 长度为0,则返回 strs 本身
-
public static String[] stripAll(String[] strs, String stripChars)
对字符串数组中的每个字符串进行 strip(String str, String stripChars) ,然后返回。 如果 strs 为 null 或 strs 长度为0,则返回 strs 本身
-
public static boolean equals(String str1, String str2)
比较两个字符串是否相等,如果两个均为空则也认为相等。
-
public static boolean equalsIgnoreCase(String str1, String str2)
比较两个字符串是否相等,不区分大小写,如果两个均为空则也认为相等。
3、字符串匹配查找
-
public static int indexOf(String str, char searchChar)
返回字符 searchChar 在字符串 str 中第一次出现的位置。 如果 searchChar 没有在 str 中出现则返回-1, 如果 str 为 null 或 "" ,则也返回-1
-
public static int indexOf(String str, char searchChar, int startPos)
返回字符 searchChar 从 startPos 开始在字符串 str 中第一次出现的位置。 如果从 startPos 开始 searchChar 没有在 str 中出现则返回-1, 如果 str 为 null 或 "" ,则也返回-1
-
public static int indexOf(String str, String searchStr)
返回字符串 searchStr 在字符串 str 中第一次出现的位置。 如果 str 为 null 或 searchStr 为 null 则返回-1, 如果 searchStr 为 "" ,且 str 为不为 null ,则返回0, 如果 searchStr 不在 str 中,则返回-1
-
public static int ordinalIndexOf(String str, String searchStr, int ordinal)
返回字符串 searchStr 在字符串 str 中第 ordinal 次出现的位置。
如果 str=null 或 searchStr=null 或 ordinal<=0 则返回-1
举例(*代表任意字符串):StringUtils.ordinalIndexOf(null, *, *) = -1 StringUtils.ordinalIndexOf(*, null, *) = -1 StringUtils.ordinalIndexOf("", "", *) = 0 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", "bc", 1) = -1 StringUtils.ordinalIndexOf("aabaabaa", "", 1) = 0 StringUtils.ordinalIndexOf("aabaabaa", "", 2) = 0
-
public static int indexOf(String str, String searchStr, int startPos)
返回字符串 searchStr 从 startPos 开始在字符串 str 中第一次出现的位置。
举例(*代表任意字符串):StringUtils.indexOf(null, *, *) = -1 StringUtils.indexOf(*, null, *) = -1 StringUtils.indexOf("", "", 0) = 0 StringUtils.indexOf("aabaabaa", "a", 0) = 0 StringUtils.indexOf("aabaabaa", "b", 0) = 2 StringUtils.indexOf("aabaabaa", "ab", 0) = 1 StringUtils.indexOf("aabaabaa", "b", 3) = 5 StringUtils.indexOf("aabaabaa", "b", 9) = -1 StringUtils.indexOf("aabaabaa", "b", -1) = 2 StringUtils.indexOf("aabaabaa", "", 2) = 2 StringUtils.indexOf("abc", "", 9) = 3
-
public static int lastIndexOf(String str, char searchChar)
基本原理同18 -
public static int lastIndexOf(String str, char searchChar, int startPos)
基本原理同19 -
public static int lastIndexOf(String str, String searchStr)
基本原理同20 -
public static int lastIndexOf(String str, String searchStr, int startPos)
基本原理同22
4、字符串拼接
-
public static <T> String join(T... elements)
将返回直接首尾拼接的字符串System.out.println(StringUtils.join(strArr,","));//Ilovechinesefamily
-
public static String join(Object[] array, String separator)
将返回用separator字符串参数拼接的字符串String[] strs={"I","love","chinese","family"}; System.out.println(StringUtils.join(strs,","));//I,love,chinese,family
3.public static String join(Object[] array, String separator, int startIndex, int endIndex)
将返回用separator字符串参数从元素startIndex开始到元素endIndex结束拼接的字符串
System.out.println(StringUtils.join(strArr,",",1,strArr.length)); //Ilovechinesefamily
- public static String join(Iterable<?> iterable, String separator)
将返回实现迭代接口的对象的拼接字符串
List<String> list=new ArrayList<>();
list.add("I");
list.add("love");
list.add("chinese");
list.add("family");
System.out.println(StringUtils.join(list,",")); //I,love,chinese,family
- public static String joinWith(String separator, Object... objects)
将返回以separator参数拼接Object可变参数的字符串
System.out.println(StringUtils.joinWith(",","I","love","chinese","family"));//I,love,chinese,family
5、字符串拆分截取
文章会持续更新!
网友评论