在检查字符串是否为空时保护字符串中的空格

时间:2013-12-17 00:41:51

标签: java string

我正在写这个函数isEmpty(String str)

此功能的行为应如下:

isEmpty("")       : true
isEmpty(" ")      : false
isEmpty("abcdef") : false

我已经编写了这个函数,但问题是并没有将空格视为字符。

public static boolean isEmpty(String str) {
  if(str == null) {
    return true;
  }

  for(Character ch:str.toCharArray()) {
    if(Character.isWhitespace(ch)) {
        continue;
    } else {
        return false;
    }
  }
  return true;
}

知道我在这个功能中缺少的地方吗?

3 个答案:

答案 0 :(得分:6)

你为什么不这样做:

return str.length() == 0

虽然我不明白为什么你需要写这个,因为这基本上是内置的String#isEmpty()方法所做的...

如果字符串包含空格,那么您编写的代码将返回字符串为空,但您对所需行为的描述表明它不需要包含空格。

因此要么删除空格检查并满足描述要求,要么留下空白检查,并且说明需要修复。

答案 1 :(得分:1)

看看这个Apache commons方法isEmpty(String)

这是它的行为方式

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true
 StringUtils.isEmpty(" ")       = false
 StringUtils.isEmpty("bob")     = false
 StringUtils.isEmpty("  bob  ") = false

实施如下,

public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
}

答案 2 :(得分:0)

答案涉及以下几点:

if(Character.isWhitespace(ch)) {
        continue;

如果您向下滚动到他们正在谈论“继续”语句的位置,您可能会发现this link很有用。然后我会尝试逐行遍历你的代码行" ",看看会发生什么。