检查Java中的字符串是空还是null

use*_*811 322 java

我正在解析HTML数据.在String可能null或空,当解析这个词不匹配.

所以,我这样写了:

if(string.equals(null) || string.equals("")){
    Log.d("iftrue", "seem to be true");
}else{
    Log.d("iffalse", "seem to be false");
}
Run Code Online (Sandbox Code Playgroud)

当我删除时String.equals(""),它无法正常工作.

我以为String.equals("")不正确.

我怎样才能最好地检查空String

Pra*_*mha 453

检查null或空的正确方法如下:

if(str != null && !str.isEmpty()) { /* do your stuffs here */ }
Run Code Online (Sandbox Code Playgroud)

  • 可以使用!= for null,但*never*for"" (39认同)
  • 只是FYI,IsEmpty()对于仅包含空格的字符串不返回true. (26认同)
  • 从 Java 11 开始,``str.trim().isEmpty()```` 可以替换为````str.isBlank()```` (11认同)
  • isEmpty仅在1.6以后可用 (3认同)
  • 否定这个答案正是Guava的[Strings.isNullOrEmpty](https://google.github.io/guava/releases/21.0/api/docs/com/google/common/base/Strings.html#isNullOrEmpty-java .lang.String-)已实现. (3认同)
  • @HonzaKalfus *“对于包含空格字符的字符串,调用isEmpty()返回true” *-不正确!“” .isEmpty()返回** false ** (2认同)

Mak*_*oto 305

您可以利用Apache Commons StringUtils.isEmpty(str),它可以检查空字符串并null优雅地处理.

例:

System.out.println(StringUtils.isEmpty("")); // true
System.out.println(StringUtils.isEmpty(null)); // true
Run Code Online (Sandbox Code Playgroud)

Google Guava还提供了一种类似的,可能更易于阅读的方法: Strings.isNullOrEmpty(str).

例:

System.out.println(Strings.isNullOrEmpty("")); // true
System.out.println(Strings.isNullOrEmpty(null)); // true
Run Code Online (Sandbox Code Playgroud)

  • 注意,isEmpty()只使用"return cs == null || cs.length()== 0;" 此外,由于commons.lang 2.0,isEmpty()不再修剪String.因此,StringUtils.isEmpty("")返回false - 但StringUtils.isBlank("")返回true. (3认同)
  • @SteveKuo println(org.apache.commons.lang.StringUtils.isEmpty(null)); // true 它只返回 TRUE... (2认同)

Evg*_*eev 67

您可以使用Apache commons-lang

StringUtils.isEmpty(String str) - 检查String是否为空("")或null.

要么

StringUtils.isBlank(String str) - 检查String是否为空格,空("")或null.

后者考虑一个由空格或特殊字符组成的字符串,例如""也是空的.请参阅java.lang.Character.isWhitespace API

  • 对于像我这样的非Java用户;确保包含“ import org.apache.commons.lang3.StringUtils;”,并确保您的包管理器已将其标记为依赖项。 (5认同)

Alé*_*lho 24

这样你检查字符串是否为空而不是空,也考虑空格:

boolean isEmpty = str == null || str.trim().length() == 0;
if (isEmpty) {
    // handle the validation
}
Run Code Online (Sandbox Code Playgroud)

  • 为简单起见,它应该是`str.trim().isEmpty()`. (6认同)
  • @DavidS如果从代码中删除“str == null”并且str变量为“null”,那么它将抛出“NullPointerException”。 (2认同)

小智 19

import com.google.common.base

if(!Strings.isNullOrEmpty(String str)) {
   // Do your stuff here 
}
Run Code Online (Sandbox Code Playgroud)

  • 字符串(参见hari的回答)来自Guava(com.google.common.base.Strings). (7认同)
  • 所有这一切都是为了以低廉的成本向您的构建添加 2.7 MB。 (7认同)
  • 无法解析符号'字符串' (3认同)