一、StringUtils里的isEmpty方法和isBlank方法的区别:
①isEmpty()
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
②isBlank()
public static boolean isBlank(String str) {
int strLen;
if (str != null && (strLen = str.length()) != 0) {
for(int i = 0; i < strLen; ++i) {
// 判断字符是否为空格、制表符、tab
if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
StringUtils.isEmpty("yyy") = false
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isBlank("yyy") = false
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
所以:
1.isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。
2.isBlank 是在 isEmpty 的基础上进行了为空(字符串都为空格、制表符、tab 的情况)的判断。(一般更为常用)
还有:
1、public static boolean isNotEmpty(String str);
2、public static boolean isNotBlank(String str);
这两个方法可以判断空字符串如” “同时也可以判断是否为”“或者null
二:清除空白字符
StringUtils.trimToNull(str);
函数介绍:清除掉str首尾的空白字符,如果仅str全由空白字符组成则返回null。
注意:函数StringUtils.trim(str)与
StringUtils.trimToNull(str)功能类似,但str由空白字符
组成时返回零长度字符串。
三、 关于StringUtils.EMPTY和toString字符串转换!
平时我们在处理字符串转换的时候,很习惯的就是.toString,但是后来发现,toString这个方法实在是有点坑,除非在你知道处理数据类型一定不存在空的情况下使用,不然就会报空指针,所以当我发现StringUtils下面有一个StringUtils.EMPTY时候就就可以完全抛弃toString了!
public static final String EMPTY=" ";
public String toString(){
return getClass().getName()+"0"+Integer.toHexString(hashCode());
}
StringUtils.EMPTY会方便很多
四、查找嵌套字符串
StringUtils.substringBetween(str,header,tail);
在str中取得header和tail之间的字符串。不存在则返回空.
五、取得字符串的缩写
StringUtils.abbreviate(str,width);
StringUtils.abbreviate(str,offset,width);
在给定的width内取得str的缩写,当testString的长度小于width则返回原字符串.
注意:width参数至少为4(包括…)
1 String test = "This is a test of the abbreviation.";
2 String test2 = "Test";
3 System.out.println( StringUtils.abbreviate( test, 15 ) );
4 System.out.println( StringUtils.abbreviate( test, 5,15 ) );
5 System.out.println( StringUtils.abbreviate( test2, 10 ) );
输出如下:
This is a te…
…is a test…
Test
六、去除尾部换行符
StringUtils.chomp(str)
去除str尾部的换行符\n
七、重复字符串
StringUtils.repeat(str,count)
得到将str重复count次后的字符串
1 System.out.println( StringUtils.repeat( "*", 10));
2 System.out.println( StringUtils.repeat( "China ", 5));
输出如下:
China China China China China
StringUtils.center( str, count,repeatString );
把str插入将repeatString重复多次后的字符串中间,得到字符串
的总长为count
1 System.out.println( StringUtils.center( "China", 11,"*"));
输出如下:
China
static String center(String str, int size);
默认以空格填充
public static String leftPad(String str,int size);
左侧空格填充
public static String leftPad(String str,int size,String padStr);
左侧字符串填充
public static String rightPad(String str,int size);
左侧空格填充
public static String rightPad(String str,int size,String padStr)
左侧字符串填充
八、颠倒字符串
StringUtils.reverse(str)
得到str中字符颠倒后的字符串
1 System.out.println( StringUtils.reverse("ABCDE"));
输出如下:
EDCBA
九、判断字符串内容的类型
StringUtils.isNumeric( str);
如果str全由数字组成返回True.
StringUtils.isAlpha( str);
如果str全由字母组成返回True.
StringUtils.isAlphanumeric( str);
如果str全由数字或数字组成返回True.
StringUtils.isAlphaspace( str);
如果str全由字母或空格组成返回True.
StringUtils.isAlphanumericSpace(String str);
只由字母数字和空格组成
StringUtils.isNumericSpace(String str);
只由数字和空格组成
十、取得某字符串在另一字符串中出现的次数
StringUtils.countMatches(str,seqString);
取得seqString在str中出现的次数,未发现则返回零
1 System.out.println(StringUtils.countMatches( "Chinese People", "e"));
输出:
4
十一、部分截取字符串
StringUtils.substringBetween(testString,fromString,toString ):
取得两字符之间的字符串
StringUtils.substringAfter(str,seqStr ):
取得指定字符串后的字符串
StringUtils.substringBefore(str,seqStr ):
取得指定字符串之前的字符串
StringUtils.substringBeforeLast( str,seqStr ):
取得最后一个指定字符串之前的字符串
StringUtils.substringAfterLast(str,seqStr ):
取得最后一个指定字符串之后的字符串
String formatted = " 25 * (30,40) [50,60] | 30";
1 System.out.print("N0: " + StringUtils.substringBeforeLast( formatted, "*" ) );
2 System.out.print(", N1: " + StringUtils.substringBetween( formatted, "(", "," ) );
3 System.out.print(", N2: " + StringUtils.substringBetween( formatted, ",", ")" ) );
4 System.out.print(", N3: " + StringUtils.substringBetween( formatted, "[", "," ) );
5 System.out.print(", N4: " + StringUtils.substringBetween( formatted, ",", "]" ) );
6 System.out.print(", N5: " + StringUtils.substringAfterLast( formatted, "|" ) );
输出:
N0: 25 , N1: 30, N2: 40, N3: 50, N4: 40) [50,60, N5: 30
十二、首字母大写
StringUtils.capitalize(String str); 首字母大写
StringUtils.uncapitalize(String str);首字母小写
十三、 是否全是大写,是否全是小写
StringUtils.isAllUpperCase(String str);
StringUtils.isAllLowerCase(String str);
十四、大小写转换,空格不动
StringUtils.swapCase(String str);
StringUtils.swapCase(“I am a-Aa”)
返回结果:i AM A-aA
十五、数组转成字符串
StringUtil.convString(String str);
默认以逗号分隔
StringUtil.converString(String str, String conv) ;
用conv分隔
String[3] s={“a”,”b”,”c”}
StringUtil.convString(s)=”a,b,c”
String[3] s={“a”,”b”,”c”}
StringUtil.convString(s,”@”)=”a@b@c”