对 String 类型最友好的工具类 -- StringUtils 类常用方法详解

版权声明:本文为博主原创文章,同步今日头条号: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() 。

下面小编主要介绍一些常用方法:

一. 判断字符串是否为空
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
二. 去掉字符串两端的空白符
  1. 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" 
  1. 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"
  1. 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"
三. 去掉字符串两端的控制符
  1. 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"
  1. 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"
  1. 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"
四. 查找
  1. indexOf():返回searchChar在字符串中第一次出现的位置,如果searchChar没有在字符串中出现,则返回-1
	StringUtils.indexOf("sdfsfsfdsf","4");	// 结果是:-1
	StringUtils.indexOf("sdfsfsfdsf","f");	// 结果是:2
  1. lastIndexOf():查找searchChar在字符串中最后一次出现的索引
	StringUtils.lastIndexOf("aFkyk","k");	//结果是:4
	StringUtils.lastIndexOf("aFkyk","");	//结果是:1
  1. indexOfIgnoreCase(),lastIndexOfIgnoreCase:用法同上,查找过程不区分大小写
五. 截取
  1. 利用下标,截取指定位置的字符串:
    只指定了起始位置,则截取至字符串末尾;
    指定了起始位置和结束位置,则从起始位置开始截取到结束位置(但不包含结束位置);
	StringUtils.substring("china", 2); 				// 结果是:ina
	StringUtils.substring("china", 2, 4); 			// 结果是:in
  1. 利用字符串,从分隔符第一次出现的位置向前截取:
	StringUtils.substringBefore("chinachina", "i");		// 结果是:ch 
  1. 利用字符串,从分隔符第一次出现的位置向后截取:
	StringUtils.substringAfter("china","h"));			// 结果是:ina
  1. 利用字符串,从分隔符最后一次出现的位置向前截取:
	StringUtils.substringBeforeLast("chinachina", "i");	// 结果是:chinach
  1. 利用字符串,从分隔符最后一次出现的位置向后截取:
	StringUtils.substringAfterLast("chinachina", "i");	// 结果是:na
  1. 利用字符串,截取指定标记字符串之间的字符序列:
	StringUtils.substringBetween("tagabctag", "tag");	// 结果是:abc
六. 替换
  1. 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
  1. overlay方法:在指定位置进行字符序列替换
	StringUtils.overlay("abcdef", "zzzz", 2, 4)); 	// abzzzzef
七. 移除
  1. 移除指定字符序列
	StringUtils.remove("china", 'b')); 					// china (如果要移除的字符不存在,则返回原字符串)
	StringUtils.remove("china", "in")); 				// cha
  1. 移除开头匹配的字符序列
	StringUtils.removeStart("china", "ch")); 			// ina
    StringUtils.removeStartIgnoreCase("china", "CHI"));	// na (忽略大小写)
  1. 移除结尾匹配的字符序列
	StringUtils.removeEnd("china", "na")); 				// chi
    StringUtils.removeEndIgnoreCase("china", "NA")); 	// chi (忽略大小写)
  1. 移除字符串内的空白字符
	StringUtils.deleteWhitespace(" c h  i\tn\ra")); 	// china
八. 转换
  1. 字符串:大写转小写
	StringUtils.lowerCase(null)); 						// null
    StringUtils.lowerCase("CHINA")); 					// china (全部转换为小写)
    StringUtils.lowerCase("CHINA", Locale.ENGLISH));	// china (按照指定转换规则转换为小写
  1. 字符串:小写转大写
	StringUtils.upperCase(null)); 						// null
    StringUtils.upperCase("china")); 					// CHINA (全部转为大写)
    StringUtils.upperCase("china", Locale.ENGLISH));	// CHINA (按照指定规则转换为大写)
  1. 字符串:小写,大写互换
    StringUtils.swapCase(null)); 						// null
    StringUtils.swapCase("chINA")); 					// CHina
  1. 判断字符串是否全部是大写或小写(空或空白符均为false)
	StringUtils.isAllUpperCase(" "));					// false
    StringUtils.isAllUpperCase("CHINA")); 				// true:全为大写
    StringUtils.isAllLowerCase("China")); 				// false
    StringUtils.isAllLowerCase("china")); 				// true:全为小写

小结

  1. blank:代表的是空串("")、空白符(空格""," “,制表符”\t",回车符"\r","\n"等)以及null值;
  2. empty:代表的是空串("")和null值,不包含空白符;
  3. whitespace:包含空串("")和空白符,不包含null值。

更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务

猜你喜欢

转载自blog.csdn.net/weixin_44259720/article/details/87981755