如何檢查字符串是否不爲null也不爲空? android
public void doStuff(String str) { if (str != null && str != "**here I want to check the 'str' is empty or not**") { /* handle empty string */ } /* ... */ }
添加到@BJorn和@SeanPatrickFloyd Guava的方法是: apache
Strings.nullToEmpty(str).isEmpty(); // or Strings.isNullOrEmpty(str);
Commons Lang有時更具可讀性,但我一直在慢慢地更多地依賴Guava,有時在談到isBlank()
時,Commons Lang有時會形成混亂(例如是否有空格)。 安全
Guava的Commons Lang isBlank
版本爲: 測試
Strings.nullToEmpty(str).trim().isEmpty()
我會說不容許使用""
(空) 和 null
是可疑的,而且有潛在的bug,由於它可能沒法處理不容許使用null
全部狀況(儘管對於SQL,我能夠理解爲SQL / HQL對''
)很奇怪。 google
只需在此處添加Android: spa
import android.text.TextUtils; if (!TextUtils.isEmpty(str)) { ... }
若是您不想包括整個庫; 只需包含您想要的代碼便可。 您必須本身維護它; 但這是一個很是簡單的功能。 這裏是從commons.apache.org複製的 code
/** * <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; }
測試等於空字符串,而且在相同條件下爲null: 對象
if(!"".equals(str) && str != null) { // do stuff. }
若是str爲null,則不拋出NullPointerException
,由於若是arg爲null
,則Object.equals()
返回false。 字符串
其餘構造str.equals("")
將拋出可怕的NullPointerException
。 有些人可能會認爲使用String文字的格式很糟糕,由於調用equals()
時的對象被調用了,可是它確實起做用。 get
還要檢查此答案: https : //stackoverflow.com/a/531825/1532705
這對我有用:
import com.google.common.base.Strings; if (!Strings.isNullOrEmpty(myString)) { return myString; }
若是給定的字符串爲null或爲空字符串,則返回true。
考慮使用nullToEmpty標準化字符串引用。 若是這樣作,則可使用String.isEmpty()代替此方法,而且您也不須要特殊的null安全形式的方法,例如String.toUpperCase。 或者,若是您但願「從另外一個方向」進行歸一化,將空字符串轉換爲null,則可使用emptyToNull。