检查一个string是否不为空而不是空的

我怎样才能检查一个string是否不为空,而不是空的?

public void doStuff(String str) { if (str != null && str != "**here I want to check the 'str' is empty or not**") { /* handle empty string */ } /* ... */ } 

怎么样isEmpty() ?

 if(str != null && !str.isEmpty()) 

确保按照这个顺序使用&&的部分,因为如果&&的第一部分失败,java将不会继续评估第二部分,因此,如果str为null,则不会从str.isEmpty()获得空指针exception。

请注意,它仅在Java SE 1.6以后才可用。 你必须检查以前版本的str.length() == 0


也要忽略空格:

 if(str != null && !str.trim().isEmpty()) 

裹着一个方便的function:

 public static boolean empty( final String s ) { // Null-safe, short-circuit evaluation. return s == null || s.trim().isEmpty(); } 

变为:

 if( !empty( str ) ) 

使用org.apache.commons.lang.StringUtils

我喜欢使用Apache commons-lang这些东西,特别是StringUtils工具类:

 import org.apache.commons.lang.StringUtils; if (StringUtils.isNotBlank(str)) { ... } if (StringUtils.isBlank(str)) { ... } 

只需在这里添加Android:

 import android.text.TextUtils; if (!TextUtils.isEmpty(str)) { ... } 

要添加到@BJorn和@SeanPatrickFloyd番石榴的方式是:

 Strings.nullToEmpty(str).isEmpty(); // or Strings.isNullOrEmpty(str); 

Commons Lang有时候更具可读性,但是我一直在慢慢地依靠Guava plus,有时候Commons Lang在isBlank()也很混乱(就像在什么空白的情况下一样)。

番石榴版本的Commons Lang isBlank将是:

 Strings.nullToEmpty(str).trim().isEmpty() 

我会说代码,不允许"" (空) null是可疑的和潜在的错误,因为它可能不处理所有情况下,不允许null是有道理的(尽pipe对于SQL我可以理解为SQL / HQL是奇怪'' )。

 str != null && str.length() != 0 

或者

 str != null && !str.equals("") 

要么

 str != null && !"".equals(str) 

注意:第二个检查(第一个和第二个select)假定str不为空。 没关系,只是因为第一个检查就是这样做的(如果第一个检查是错误的,Java不会执行第二个检查)!

重要提示:不要使用==来表示string相等。 ==检查指针是否相等,而不是值。 两个string可以在不同的内存地址(两个实例),但具有相同的值!

这适用于我:

 import com.google.common.base.Strings; if (!Strings.isNullOrEmpty(myString)) { return myString; } 

如果给定的string为空或者为空string,则返回true。

考虑使用nullToEmpty规范化string引用。 如果你这样做,你可以使用String.isEmpty()来代替这个方法,而且你也不需要像String.toUpperCase那样的特殊的无安全forms的方法。 或者,如果你想规范化“在另一个方向”,将空string转换为空,你可以使用emptyToNull。

我所知道的几乎每个库都定义了一个名为StringUtilsStringUtilStringHelper的实用程序类,它们通常包含您正在查找的方法。

我个人最喜欢的是Apache Commons / Lang ,在StringUtils类中,你得到了两个

  1. StringUtils.isEmpty(String)和
  2. StringUtils.isBlank(String)方法

(第一个检查string是否为空或空,第二个检查是否为空,空或空白)

在Spring,Wicket和其他许多库中都有类似的工具类。 如果你不使用外部库,你可能想在你自己的项目中引入一个StringUtils类。


更新:多年过去了,现在我推荐使用Guava的Strings.isNullOrEmpty(string)方法。

怎么样:

 if(str!= null && str.length() != 0 ) 

使用Apache的StringUtils的isNotBlank方法

 StringUtils.isNotBlank(str) 

只有当str不为null且不为空时,它才会返回true。

如果你不想包括整个图书馆, 只是包括你想要的代码。 你必须自己维护它; 但它是一个非常简单的function。 这里是从commons.apache.org复制的

  /** * <p>Checks if a String is whitespace, empty ("") or null.</p> * * <pre> * StringUtils.isBlank(null) = true * StringUtils.isBlank("") = true * StringUtils.isBlank(" ") = true * StringUtils.isBlank("bob") = false * StringUtils.isBlank(" bob ") = false * </pre> * * @param str the String to check, may be null * @return <code>true</code> if the String is null, empty or whitespace * @since 2.0 */ public static boolean isBlank(String str) { int strLen; if (str == null || (strLen = str.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; } 

如果您知道要检查的string,可以使用以下内容

 if (!"mystring".equals(str)) { /* your code here */ } 

您应该使用org.apache.commons.lang3.StringUtils.isNotBlank()org.apache.commons.lang3.StringUtils.isNotEmpty 。 这两者之间的决定是基于你真正想要检查的。

isNotBlank()检查input参数是:

  • 不是空的,
  • 不是空string(“”)
  • 不是一个空白字符序列(“”)

isNotEmpty()仅检查input参数是否为

  • 不为null
  • 不是空string(“”)

这有点太晚了,但这是一个function性的检查方式:

 Optional.ofNullable(str) .filter(s -> !(s.trim().isEmpty())) .ifPresent(result -> { // your query setup goes here }); 

正如上面所说的那样,Apache StringUtils非常棒,如果你要包含番石榴,你应该做下面的事情;

 public List<Employee> findEmployees(String str, int dep) { Preconditions.checkState(StringUtils.isNotBlank(str), "Invalid input, input is blank or null"); /** code here **/ } 

我也build议你通过名称而不是索引来引用结果集中的列,这将使你的代码更容易维护。

testing等于一个空string,在相同条件下为null:

 if(!"".equals(str) && str != null) { // do stuff. } 

如果str为null,则不抛出NullPointerException ,因为如果arg为null ,则Object.equals()返回false。

另一个构造str.equals("")会抛出可怕的NullPointerException 。 有些人可能会认为糟糕的forms使用string文字作为最重要的对象equals()被调用,但它做的工作。

另外检查这个答案: https : //stackoverflow.com/a/531825/1532705

我做了我自己的实用函数来一次检查几个string,而不是if语句充满if(str != null && !str.isEmpty && str2 != null && !str2.isEmpty) 。 这是function:

 public class StringUtils{ public static boolean areSet(String... strings) { for(String s : strings) if(s == null || s.isEmpty) return false; return true; } } 

所以我可以简单地写:

 if(!StringUtils.areSet(firstName,lastName,address) { //do something } 

如果不是一些语法糖(只要把常数放在==!=的前面),只需要一些小的好习惯。

 if(null != str && !str.isEmpty()) 

您可以使用StringUtils.isEmpty(),如果string为null或空,则会返回true。

  String str1 = ""; String str2 = null; if(StringUtils.isEmpty(str)){ System.out.println("str1 is null or empty"); } if(StringUtils.isEmpty(str2)){ System.out.println("str2 is null or empty"); } 

会导致

str1为空或空

str2为空或空

我会根据您的实际需要build议Guava或Apache Commons。 检查我的示例代码中的不同行为:

 import com.google.common.base.Strings; import org.apache.commons.lang.StringUtils; /** * Created by hu0983 on 2016.01.13.. */ public class StringNotEmptyTesting { public static void main(String[] args){ String a = " "; String b = ""; String c=null; System.out.println("Apache:"); if(!StringUtils.isNotBlank(a)){ System.out.println(" a is blank"); } if(!StringUtils.isNotBlank(b)){ System.out.println(" b is blank"); } if(!StringUtils.isNotBlank(c)){ System.out.println(" c is blank"); } System.out.println("Google:"); if(Strings.isNullOrEmpty(Strings.emptyToNull(a))){ System.out.println(" a is NullOrEmpty"); } if(Strings.isNullOrEmpty(b)){ System.out.println(" b is NullOrEmpty"); } if(Strings.isNullOrEmpty(c)){ System.out.println(" c is NullOrEmpty"); } } } 

结果:
阿帕奇:
a是空白的
b是空白的
c是空白的
谷歌:
b是NullOrEmpty
c是NullOrEmpty

简单的scheme:

 private boolean stringNotEmptyOrNull(String st) { return st != null && !st.isEmpty(); } 

为了完整性:如果您已经使用Spring框架 ,则StringUtils提供该方法

 org.springframework.util.StringUtils.hasLength(String str) 

返回:如果string不为null并且具有长度,则返回true

以及方法

 org.springframework.util.StringUtils.hasText(String str) 

返回:如果String不为null,则其长度大于0,且不包含空白

简单地说,也要忽略空白:

 if (str == null || str.trim().length() == 0) { // str is empty } else { // str is not empty } 

我用这个固定了我的

 if(user==null) { }else if(user.isEmpty()) { }else{ //code to run } 

– – -要么 – – –

 if(user==null) { }else if(user.length() == 0) { }else{ //code to run } 

– – -要么 – – –

 if(user==null) { }else if(user.equals("")) { }else{ //code to run } 
 String str="Nasir"; if(str.isEmpty()){ System.out.println("string is empty"); } else{ System.out.println("string is not empty"); }