Java中如何检查空字符串

16

我不知道以下代码有什么问题... 我从文本框获取输入并将其放入字符串中。如果文本框为空,则会返回空字符串。以下是代码:

   String[] str = new String[9]; 
   for(int i=0;i<9;i++){
       if(str[i].equals("")){
          System.out.println("set " + cmds[i] + " " + str[i]);
          WriteThread.sendCommand("set " + cmds[i] + " " + str[i] + "\n", false);
       }
    }
在上面的代码中,str[i] 存储了文本框中的输入文本,我试图检查数组中是否有任何元素为空。我也尝试使用 str[i] == ""str[i] == null,但没有成功。如果在 if 块内打印字符串 str[i],它什么也不会显示,这意味着它是空的。
我做错什么了吗?

1
你想要检查什么?你检查字符串是否为空,然后打印,结果就像是“set”+...因为你看不到一个空字符串:)。可能你想测试非条件:即如果(!str[i] .equals(“”)).. - sateesh
真的很简单,只需要检查if()条件... - ThinkJet
你觉得你能否编辑一下你的问题,使它更容易理解?从评论和答案中,我可以看出我不是唯一一个不确定你真正想要什么的人... :-( - KLE
抱歉打错字了。实际上那是你提到的非条件。 - Surjya Narayana Padhi
不是解决问题,但通常更倾向于编写 if("".equals(str[i])) 来避免空指针异常。 - chburd
6个回答

27
你可以尝试:

你可以尝试:

if (str[i] == null || str[i].trim().equals("")){
// your code
}

15

您可以使用Apache Commons Lang来检查字符串:

if (StringUtils.isBlank(str[i]) {
    ...
}

StringUtils.isBlank 检查字符串是否为 null 或为空(即在移除所有空白字符时,是否等于 "")。


如果有人只输入了空格,会发生什么? - Jony
1
@AshishDonvir StringUtils.isBlank(" ") 返回 true。如果你想让这个测试返回 false,你可以使用 StringUtils.isEmpty(...) - Romain Linsolas

1
我建议
if (str[i] == null || str[i].trim().length==0){
// your code
}

或更高版本的Java 6。
if (str[i] == null || str[i].trim().isEmpty()){
// your code
}

不要使用equals()方法来测试空字符串,因为它过于复杂。


0
以上代码只有在字符串为空时才会执行,这是期望的行为吗?另外,在循环之前声明str为新的几乎保证它将为空。
如果您想要从文本框中分配值,您需要在循环之前将这些分配放在某个地方。

0

我实际上尝试运行了你的代码片段,但在你的条件语句上出现了NullPointerException异常。

str[i].equals("")

str[i] == null 对我有用。你确定你在问题中放入了正确的代码吗?测试一个刚初始化的空数组的空字符串似乎很奇怪。


0
一个非常简单的解决方案可以像这样。
if(str[] != null && !str[].equals(""))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接