Android在Android中检查null或空字符串


77

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

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);
        }
    }

我如何检查nullempty串?

Answers:


157

采用 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);

笔记

  • 文档指出同时检查了零长度和零长度。无需在这里重新发明轮子。
  • 遵循的良好做法是尽早返回

63

来自@Jon Skeet的评论,确实String值是"null"。以下代码解决了它

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

1
if (userEmail != null && (!TextUtils.equals(userEmail ,"null")) && (!TextUtils.isEmpty(userEmail))){也有效
user3384985

5
这可能适用于电子邮件,但不要equals("null")用来检查用户名是否为空。bbc.com/future/story/...
DITI

1
userEmail.equalsIgnoreCase("null")如果是大写的null值,则可能会更好。

26

哟可以用以下方法检查它:

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

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

上面的描述,它仅从Java SE 1.6起可用。检查userEmail.length() == 0以前的版本。


更新:

使用类中的fromisEmpty(stringVal)方法TextUtils

if (TextUtils.isEmpty(userEmail))

Kotlin:

使用fromisNullOrEmpty表示空值或空值,或者isNullOrBlank表示空值或空值,或仅由空格字符组成。

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和length。

public static boolean isEmpty(CharSequence str) {
     if (str == null || str.length() == 0)
        return true;
     else
        return false;
}

1

如果您检查null或空字符串,则可以尝试此操作

if (createReminderRequest.getDate() == null && createReminderRequest.getDate().trim().equals("")){
    DialogUtility.showToast(this, ProjectUtils.getString(R.string.please_select_date_n_time));
}

0

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

if(s.equals(“ null”)){.....}

有两种情况。

变量(字符串类型)为null(不存在):==有效。

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

看图片。 在此处输入图片说明


您是说单词null还是值null的变量?

-1

这对我有用

EditText   etname = (EditText) findViewById(R.id.etname);
 if(etname.length() == 0){
                    etname.setError("Required field");
                }else{
                    Toast.makeText(getApplicationContext(),"Saved",Toast.LENGTH_LONG).show();
                }

或将此用于字符串

String DEP_DATE;
if (DEP_DATE.equals("") || DEP_DATE.length() == 0 || DEP_DATE.isEmpty() || DEP_DATE == null){
}

请考虑首先添加一个空检查。
本尼

-1

您所能做的就是在空String文字上调用equals()方法,并传递您正在测试的对象,如下所示:

 String nullString = null;
 String empty = new String();
 boolean test = "".equals(empty); // true 
 System.out.println(test); 
 boolean check = "".equals(nullString); // false 
 System.out.println(check);

-1

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

String myString = null;

if(myString.trim().equalsIgnoreCase("null")){
    //do something
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.