检查空格和 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();
}
我正在寻找一个 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();
}