检查空格和 isempty

Check whitespaces and isempty

我正在寻找一个 if 语句来检查输入字符串是否为空或仅由空格组成,如果不是则继续下一个输入。下面是我目前的代码,当我输入空格时会出错。

    name = name.trim().substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
    if(name != null && !name.isEmpty() && name.contains(" ")) {
        System.out.println("One");
    } else {
        System.out.println("Two");
    }

它给您错误的原因是 trim() 删除了所有前导和尾随空格 [已编辑],因此您的字符串为空。那时,你调用 substring(0,1),所以它会超出范围。

我认为,如果您只想使用 String 方法,那么您将需要 matches(regex),可能不止一个。

我还没有测试过这个,但它可能有用...

String emptyOrAllWhiteSpace = "^[ \t]*$";
if (name == null || name.matches(emptyOrAllWhiteSpace)) {
    // first thing.
} else {
    // second thing.
}

Apache Commons Lang 库中有替代方案 - StringUtils.isEmpty(CharSequence)StringUtils.isWhitespace(CharSequence)

Guava 还有另一个助手 Strings.isNullOrEmpty(),您可以使用它。

我会这样写。

name = name == null ? "" : name.trim();
if(name.isEmpty()) {
    System.out.println("Null, empty, or white space only name received");
} else {
    System.out.println("Name with at least length one received");
    name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
}