在Android中检查null或空字符串

88

在我的尝试中,使用AsyncTask从服务器获取电子邮件地址。在onPostExecute()中,我必须检查电子邮件地址是否为空或null。我使用以下代码进行检查:

if (userEmail != null && !userEmail.isEmpty()) {
    Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
    UserEmailLabel.setText(userEmail);
}

但是在我的Toast中,我看到打印出的是null。 我的完整代码如下:

private class LoadPersonalData extends AsyncTask<String, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    protected Void doInBackground(String... res) {
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user_id", PrefUserName));
        params.add(new BasicNameValuePair("type", type_data));
        JSONObject json = jsonParser.makeHttpRequest(Url, "POST", params);
        String result = "";
        try {
            result = json.getString("message");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        if (result.equals("success")) {
            try {
                userEmail = json.getString("email");
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);            
        if (userEmail != null && !userEmail.isEmpty()) {
            Toast.makeText(getActivity(), userEmail, Toast.LENGTH_LONG).show();
            UserEmailLabel.setText(userEmail);
        }
    }

如何检查 null空字符串(empty)

11个回答

179

使用 TextUtils.isEmpty(someString)

String myString = null;

if (TextUtils.isEmpty(myString)) {
    return; // or break, continue, throw
}

// myString is neither null nor empty if this point is reached
Log.i("TAG", myString);

注意事项

  • 根据文档,将同时检查null和零长度。这里无需重复发明轮子。
  • 一个好的实践是遵循早期返回

69

根据 Jon Skeet 的评论,实际上 String 值是 "null"。以下代码解决了这个问题。

if (userEmail != null && !userEmail.isEmpty() && !userEmail.equals("null")) 

1
如果(userEmail!= null &&(!TextUtils.equals(userEmail,“null”))&&(!TextUtils.isEmpty(userEmail))){也可以工作。 - user3384985
5
这种方法可能适用于电子邮件,但是不要使用equals("null")来检查空用户名。http://www.bbc.com/future/story/20160325-the-names-that-break-computer-systems - Diti
1
如果出现大写的null值,使用userEmail.equalsIgnoreCase("null")可能更好。 - Subby

31

您可以使用以下方法进行检查:

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

请记住,必须按照上面的代码顺序使用。这可以确保当userEmail为空时,您不会从userEmail.isEmpty()中得到空指针异常。

以上描述仅适用于Java SE 1.6及以上版本。在先前的版本中,请检查userEmail.length() == 0


更新:

使用TextUtils类中的isEmpty(stringVal)方法:

if (TextUtils.isEmpty(userEmail))

Kotlin:

使用isNullOrEmpty来判断是否为null或空值,或者使用isNullOrBlank来判断是否为null、空值或仅由空格字符组成。

if (userEmail.isNullOrEmpty())
...
if (userEmail.isNullOrBlank())

14

检查空字符串是否等于 null,长度为零或包含 "null" 字符串

public static boolean isEmptyString(String text) {
        return (text == null || text.trim().equals("null") || text.trim()
                .length() <= 0);
    }

4
你可以使用TextUtils中的“isEmpty”实用方法来检查它,
“isEmpty(CharSequence str)”方法会检查null和长度两个条件。
public static boolean isEmpty(CharSequence str) {
     if (str == null || str.length() == 0)
        return true;
     else
        return false;
}

3

检查空字符串的正确方法。

1. 这种方法速度较快,但不安全,如果字符串为null将会抛出NullPointErexception异常。

if str.isEmpty() then

2. 它也更快但不是空安全的。

if String.length() = 0 then

3. 它不比前两者更快,但它是空安全的。

if "".equals(str) then

4. Fouth way

TextUtils.isEmpty(myString)

5. 如果您想检查空字符串。

StringUtils.isEmpty(nullString)

6. 如果您想同时检查null和空字符串

if (str == null || str.length() == 0)

2

如果你想检查 null 或空字符串,可以尝试以下代码:

 if (yourString != null){
    if(yourString.length==0  && yourString.equals(""))
    Toast.makeText(myClassName.this, "Empty",Toast.LENGTH_LONG).show();
 }else{
    Toast.makeText(myClassName.this, "String null" , Toast.LENGTH_LONG).show();
    }

或者使用TextUtils类。
 if (TextUtils.isEmpty(yourString )) {
       Toast.makeText(myClassName.this, "Empty" , Toast.LENGTH_LONG).show();
    } 

2
如果使用Kotlin:-
 if (TextUtils.isEmpty(userEmail).not()) {
        // do your work
    } else {
        // can show error message userEmail is empty
    }

如果使用Java:-
  if (!TextUtils.isEmpty(userEmail)) {
        // do your work
    } else {
        // can show error message userEmail is empty
    }

1

我测试字符串是否为空的简单解决方案:

if (s.equals("null")){ ..... }

有两种情况。

该变量(类型为String)为空(不存在): == 可行。

该变量具有空值, *.equals("null") 给出正确的布尔值。

请参见图片。 enter image description here


你是指单词n-u-l-l还是一个值为null的变量? - user3456014

0

如果所有给出的答案都不起作用,请尝试

String myString = null;

if(myString.trim().equalsIgnoreCase("null")){
    //do something
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接