点赞再看,养成好习惯
哈喽,大家好,我是一条。 昨天写代码遇到一个坑,字符串的非空的判断,特此记录。
StringUtils在commons-lang-2.2.jar
包中org.apache.commons.lang.StringUtils
;
顾名思义,StringUtils主要的操作对象是字符串,共有130多个静态方法,所以我们可以直接用StringUtils.xxx()
调用。
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
不难分析,和我们写a==null||a.equals("")
没区别
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false //注意在StringUtils中空格作非空处理
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("li") = false
StringUtils.isEmpty(" lib ") = false
public static boolean isBlank(CharSequence cs) {
int strLen;
if (cs != null && (strLen = cs.length()) != 0) {
for(int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
关键点在这一行:!Character.isWhitespace(cs.charAt(i))
isWhitespace()
方法用于判断指定字符是否为空白字符,空白符包含:空格、tab键、换行符。
//判断某字符串是否为空或长度为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
isEmpty()
和isBlank()
的主要区别在于对空格符的判断。isNotEmpty()
等于!isEmpty()
; isNotBlank()
等于!isBlank()
isBlank
的范围比isEmpty
的范围大。去除首尾空格
//下面是示例:
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"
去掉字符串两端的控制符(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"
去掉字符串两端的控制符(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"
我是一条,一个在互联网摸爬滚打的程序员。