isEmpty 和 isBlank 区别?

野性酷女 2022-10-29 09:05 337阅读 0赞

链接 | jianshu.com/p/98e7593ca0e2

org.apache.commons.lang.StringUtils 类提供了 String 的常用操作,最为常用的判空有如下两种 isEmpty(String str) isBlank(String str)

分析

我们通过源码来分析区别:

  1. public static boolean isEmpty(String str) {
  2. return str == null || str.length() == 0;
  3. }
  4. public static boolean isNotEmpty(String str) {
  5. return !isEmpty(str);
  6. }
  7. public static boolean isBlank(String str) {
  8. int strLen;
  9. if (str != null && (strLen = str.length()) != 0) {
  10. for(int i = 0; i < strLen; ++i) {
  11. if (!Character.isWhitespace(str.charAt(i))) {
  12. return false;
  13. }
  14. }
  15. return true;
  16. } else {
  17. return true;
  18. }
  19. }
  20. public static boolean isNotBlank(String str) {
  21. return !isBlank(str);
  22. }

可以看到:

  1. StringUtils.isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==nullstr.length()==0
  2. StringUtils.isBlank(String str) 判断某字符串是否为空或长度为 0 或由空白符 (whitespace) 构成
  3. StringUtils.isNotEmpty(String str) 等价于 !isEmpty(String str)

示例

1. isEmpty

  1. StringUtils.isEmpty(null) = true
  2. StringUtils.isEmpty("") = true
  3. StringUtils.isEmpty(" ") = false //注意在 isEmpty中,空格不识别为空字符
  4. StringUtils.isEmpty(" ") = false
  5. StringUtils.isEmpty("bob") = false
  6. StringUtils.isEmpty(" bob ") = false

2. isNotEmpty:

  1. StringUtils.isNotEmpty(null) = false
  2. StringUtils.isNotEmpty("") = false
  3. StringUtils.isNotEmpty(" ") = true
  4. StringUtils.isNotEmpty(" ") = true
  5. StringUtils.isNotEmpty("bob") = true
  6. StringUtils.isNotEmpty(" bob ") = true

3. isBlank: 

  1. StringUtils.isBlank(null) = true
  2. StringUtils.isBlank("") = true
  3. StringUtils.isBlank(" ") = true //注意在 isBlank 中,空格识别为空字符
  4. StringUtils.isBlank(" ") = true
  5. StringUtils.isBlank("\t \n \f \r") = true //对于制表符、换行符、换页符和回车符,均识为空白符
  6. StringUtils.isBlank("\b") = false //"\b"为单词边界符,识别为非空字符
  7. StringUtils.isBlank("bob") = false
  8. StringUtils.isBlank(" bob ") = false

4.isNotBlank:

  1. StringUtils.isNotBlank(null) = false
  2. StringUtils.isNotBlank("") = false
  3. StringUtils.isNotBlank(" ") = false
  4. StringUtils.isNotBlank(" ") = false
  5. StringUtils.isNotBlank("\t \n \f \r") = false
  6. StringUtils.isNotBlank("\b") = true
  7. StringUtils.isNotBlank("bob") = true
  8. StringUtils.isNotBlank(" bob ") = true

使用建议

看个人需求,如果想判断严格一点,空格或者制表符等都算空字符,则需要使用StringUtils.isBlank(String str),毕竟判断的条件更多更具体。

如果不需要那么严格,则使用哪个都无所谓了。

发表评论

表情:
评论列表 (有 0 条评论,337人围观)

还没有评论,来说两句吧...

相关阅读