在Java中检查空字符串

我不知道下面的代码有什么问题….我从文本框中获取输入并将输入放在一个字符串中。 如果文本框为空,则返回空字符串。 在下面的代码中

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] ,它显示没有任何意味着它是空的。

我做错了什么吗?

你可以尝试:

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

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

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

StringUtils.isBlank正在检查String是null还是空(即,如果删除所有空白字符时它等于"" )。

上面的代码只在字符串为空时执行,是否是所需的行为? 在循环之前声明str为new right几乎可以保证它是空的。

如果您尝试从文本框中分配值,则需要在循环之前的某处分配这些赋值。

我实际上试图运行你的代码片段并在条件上得到NullPointerException

STR [1] .equals( “”)

str [i] == null为我工作。 您确定在问题中输入了正确的代码吗? 测试刚刚初始化的空数组的空字符串似乎很奇怪。

我会推荐

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

或Java 6以后

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

而不是使用equals(),因为equals() 方法过度杀死以测试空String 。

一个非常简单的解决方案可以是这样的。

 if(str[] != null && !str[].equals(""))