我正在寻找一个if语句来检查输入String是否为空或仅由空格组成,如果没有继续下一个输入。下面是我的代码到目前为止,当我输入空格时会出错。
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");
}
答案 0 :(得分:5)
它给你一个错误的原因是trim()删除所有前导和尾随空格[编辑],所以你的字符串是空的。此时,您调用substring(0,1),因此它将超出范围。
答案 1 :(得分:1)
我会将其写为以下内容。
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();
}
答案 2 :(得分:0)
我认为,如果你只想使用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()
,你可以使用它。