Android перевіряє нульовий або порожній рядок в Android


77

Під час спроб AsyncTaskя отримую електронну адресу зі свого сервера. У onPostExecute()мені потрібно перевірити адресу електронної пошти emptyабо 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ввести рядок?

Відповіді:


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 / ...
дить

1
Можливо, це буде краще мати userEmail.equalsIgnoreCase("null")у випадку нульового значення у верхньому регістрі.
Subby

26

Ви можете перевірити це за допомогою цього:

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

І пам’ятайте, що ви повинні використовувати саме вказаний вище код із цим замовленням. Тому що, гарантуючи, що ви не отримаєте виняток нульового покажчика з userEmail.isEmpty()if userEmailє null.

Над описом він доступний лише з Java SE 1.6. Перевірте userEmail.length() == 0попередні версії.


ОНОВЛЕННЯ:

Використовувати з isEmpty(stringVal)методу з TextUtilsкласу:

if (TextUtils.isEmpty(userEmail))

Kotlin:

Використовується від isNullOrEmptyдля нульових або порожніх значень АБО isNullOrBlankдля нульових чи порожніх або складається виключно з пробілів.

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

14

Перевірка порожнього рядка, якщо він дорівнює нулю, довжина дорівнює нулю або містить рядок "нуль"

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

4

Ви можете перевірити це за допомогою утилітного методу "isEmpty" від TextUtils,

isEmpty (CharSequence str) метод перевіряє обидва умови, на нуль і довжину.

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

1

якщо ви встановите нульовий або порожній рядок, щоб спробувати це

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")) {.....}

Є два випадки.

Змінна (типу String) має значення 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

Все, що ви можете зробити, це викликати метод equals () для порожнього літералу String і передати тестований об'єкт, як показано нижче:

 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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.