如何检查空字符串

时间:2013-01-15 14:43:20

标签: java string error-handling

如果变量包含空字符串,我试图为变量分配一个默认值。我使用了以下代码,但它们没有用完:

if (d.lat.trim().isEmpty())
   latt = 9.0819990;
else {
   latt = Double.valueOf(d.lat.trim()).doubleValue();
}

以上代码会导致错误:

cannot find symbol
symbol  : method isEmpty()
location: class java.lang.String

然后我用

if (" ".equals(d.lat.trim()))
   latt = 9.0819990;
else {
   latt = Double.valueOf(d.lat.trim()).doubleValue();
}

上面的代码跳转if部分并尝试将空String转换为double,从而抛出有关空字符串的错误。

那么,我做错了什么?

5 个答案:

答案 0 :(得分:3)

空字符串为"",而不是" "(请注意引号之间没有空格)。

答案 1 :(得分:3)

NPE是正确的 但我可以推荐Apache StringUtils http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#isBlank(java.lang.String

检查String是否为空格,为空(“”)或为空。

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

答案 2 :(得分:1)

第一个块对我来说没问题,但你可能正在编译Java5,它还没有String.isEmpty()方法。

答案 3 :(得分:1)

如果您使用String.length() == 0代替String.isEmpty()怎么办?

答案 4 :(得分:1)

Apache StringUtils是解决您正在实施的验证问题的一种非常好的方法。然而,你不能使用.isEmpty方法的错误似乎很奇怪,你使用的是什么版本的JDK?尝试使用最新版本(JDK 7)或至少使用JDK 6更改类路径中JDK的版本。

还记得空字符串用“”表示,只是引号没有任何空白。看来你验证的方式还可以。你可以尝试这样的事情。

if (d.lat.trim().isEmpty() || d.lat.length == 0)
   latt = 9.0819990;
else {
   latt = Double.valueOf(d.lat.trim()).doubleValue();
   // or as mentioned before: latt = Double.parseDouble(d.lat.trim());
}