我从一个XML文件传递一个accountid作为输入,如下所示,稍后将对其进行解析并将在我们的代码中使用:
<accountid>123456</accountid>
<user>pavan</user>
问题是如果没有传递任何内容(accoutnid中的空值)作为accountid传递,我无法在Java代码中处理这种情况。我试过了,但我没有成功:
if (acct != null||acct==""||acct.equals(""))
{
// the above is not working
}
我能够使用以下方法成功处理此问题:
if(!acct.isEmpty())
{
// thisis working
}
我们可以依靠String.isEmpty()
方法检查String
的空状态吗?这有效吗?
答案 0 :(得分:107)
不,绝对不是 - 因为如果acct
为空,它甚至不会 到isEmpty
...它会立即抛出NullPointerException
您的测试应该是:
if (acct != null && !acct.isEmpty())
请注意,此处使用&&
,而不是之前代码中的||
;另请注意,在您之前的代码中,您的条件无论如何都是错误的 - 即使使用&&
,如果if
为空字符串,您也只会输入acct
正文
或者,使用Guava:
if (!Strings.isNullOrEmpty(acct))
答案 1 :(得分:18)
使用StringUtils.isEmpty
代替,它也会检查是否为空。
例如:
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
有关official Documentation on String Utils的更多信息,请参阅
答案 2 :(得分:6)
如果为String.isEmpty()
,则无法使用public static boolean isBlankOrNull(String str) {
return (str == null || "".equals(str.trim()));
}
。最好的方法是使用自己的方法来检查null或为空。
{{1}}
答案 3 :(得分:1)
String s1=""; // empty string assigned to s1 , s1 has length 0, it holds a value of no length string
String s2=null; // absolutely nothing, it holds no value, you are not assigning any value to s2
所以null与empty不同。
希望有所帮助!!!答案 4 :(得分:1)
不,String.isEmpty()
方法如下所示:
public boolean isEmpty() {
return this.value.length == 0;
}
你可以看到它检查字符串的长度 所以你必须先检查字符串是否为空。
答案 5 :(得分:0)
我认为您想要的更简短的答案是: StringUtils.isBlank(acct);
isBlank
public static boolean isBlank(String str)
Checks if a String is whitespace, empty ("") or null.
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
Parameters:
str - the String to check, may be null
Returns:
true if the String is null, empty or whitespace