检查一个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。
我所知道的几乎每个库都定义了一个名为StringUtils
, StringUtil
或StringHelper
的实用程序类,它们通常包含您正在查找的方法。
我个人最喜欢的是Apache Commons / Lang ,在StringUtils类中,你得到了两个
- StringUtils.isEmpty(String)和
- 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"); }