判断字符串空值
作用(判断逻辑) 返回值 方法 判断字符串是否为空白( null
、空字符串""
或纯空格" "
)boolean StringUtils.isBlank(String str) 判断字符串是否为空(仅 null
或空字符串""
,纯空格" "
视为非空)boolean StringUtils.isEmpty(String str) 判断字符串是否为非空白(不为 null
、非空字符串且非纯空格)boolean StringUtils.isNotBlank(String str) 判断字符串是否为非空(不为 null
且非空字符串,纯空格" "
视为非空)boolean StringUtils.isNotEmpty(String str) 判断多个字符串中是否任意一个为空白(只要有一个满足 isBlank
,则返回true
)boolean StringUtils.isAnyBlank(CharSequence… css) 判断多个字符串中是否任意一个为空(只要有一个满足 isEmpty
,则返回true
)boolean StringUtils.isAnyEmpty(CharSequence… css) 判断多个字符串是否全部为非空白(所有都满足 isNotBlank,才返回 true) boolean StringUtils.isNoneBlank(CharSequence… css) 判断多个字符串是否全部为非空(所有都满足 isNotEmpty
,才返回true
)boolean StringUtils.isNoneEmpty(CharSequence… css)
区别说明:
1. isBlank
与 isEmpty
- isBlank
更严格:会把纯空格(" "
)视为空白(返回 true
);
- isEmpty
仅判断 null
或空字符串(""
),纯空格会返回 false
。
2. 批量判断(isAnyXXX
与 isNoneXXX
)
- isAnyBlank
:“有一个空白就返回 true
”(用于校验 “必填字段不能有空白”);
- isNoneBlank
:“所有都非空白才返回 true
”(与 !isAnyBlank
等价);
- isAnyEmpty
和 isNoneEmpty
逻辑类似,但基于 isEmpty
判断。
演示
StringUtils.isBlank(""); // true
StringUtils.isBlank(" "); // true
StringUtils.isBlank(" "); // true
StringUtils.isBlank("\t"); // true
StringUtils.isBlank("\r"); // true
StringUtils.isBlank("\n"); // true
StringUtils.isBlank(null); // true
StringUtils.isEmpty(""); // true
StringUtils.isEmpty(" "); // false
StringUtils.isEmpty(" "); // false
StringUtils.isEmpty("\t"); // false
StringUtils.isEmpty("\r"); // false
StringUtils.isEmpty("\n"); // false
StringUtils.isEmpty(null); // true
StringUtils.isWhitespace(""); // true
StringUtils.isWhitespace(" "); // true
StringUtils.isWhitespace(" "); // true
StringUtils.isWhitespace("\t"); // true
StringUtils.isWhitespace("\r"); // true
StringUtils.isWhitespace("\n"); // true
StringUtils.isWhitespace(null); // false
从上面的结果可以看出
blank
:代表的是空串(""
)、空白符(空格""
," "
,制表符"\t"
,回车符"\r"
,"\n"
等)以及null
值;empty
:代表的是空串(""
)和null
值,不包含空白符;whitespace
:包含空串(""
)和空白符,不包含null
值;
isAnyBlank,isNoneBlank,isAnyEmpty,isNoneEmpty四个方法是用于判断多个字符串是否为空;
对于isAnyBlank和isAnyEmpty来说,只要有一个字符串为空,结果即为true;
对于isNoneBlank和isNoneEmpty,只要存在一个字符串为空,结果即为false,具体参见下面的例子
StringUtils.isAnyBlank("titanic", "jack", "rose")); // false
StringUtils.isAnyBlank("", "jack", "rose")); // true
StringUtils.isAnyBlank(" ", "jack", "rose")); // true
StringUtils.isAnyBlank(null, "jack", "rose")); // true
StringUtils.isAnyEmpty("titanic", "jack", "rose")); // false
StringUtils.isAnyEmpty("", "jack", "rose")); // true
StringUtils.isAnyEmpty(" ", "jack", "rose")); // false
StringUtils.isAnyEmpty(null, "jack", "rose")); // true
StringUtils.isNoneBlank("titanic", "jack", "rose")); // true
StringUtils.isNoneBlank("", "jack", "rose")); // false
StringUtils.isNoneBlank(" ", "jack", "rose")); // false
StringUtils.isNoneBlank(null, "jack", "rose")); // false
StringUtils.isNoneEmpty("titanic", "jack", "rose")); // true
StringUtils.isNoneEmpty("", "jack", "rose")); // false
StringUtils.isNoneEmpty(" ", "jack", "rose")); // true
StringUtils.isNoneEmpty(null, "jack", "rose")); // false