5

Проверьте, что строка не равна null и не пуста

12

Заголовок: Как проверить, что строка не равна null и не пустая?

Описание проблемы:

Я работаю над методом в Java, и мне нужно проверить, что строка не равна null и не является пустой. Вот фрагмент кода, с которым я работаю:

public void doStuff(String str)
{
    if (str != null && str != "**здесь я хочу проверить, пуста ли строка или нет**")
    {
        /* обработка пустой строки */
    }
    /* ... */
}

В текущем условии я пытаюсь определить, пуста ли строка, но не знаю, как это правильно сделать. Есть ли какой-то способ сделать проверку на пустую строку в этом условии? Спасибо!

5 ответ(ов)

1

Конечно, вот пример кода на Android, в котором используется класс TextUtils для проверки, не является ли строка пустой:

import android.text.TextUtils;

if (!TextUtils.isEmpty(str)) {
    // Ваш код здесь, если строка не пуста
    ...
}

Этот код проверяет, что переменная str не пустая и не равна null. Это упрощает проверку и делает код более читаемым. Если строка содержит какой-либо текст, выполнение перейдет внутрь блока if.

0

Чтобы дополнить @BJorn и @SeanPatrickFloyd, "гуавый" способ сделать это выглядит так:

Strings.nullToEmpty(str).isEmpty(); 
// или
Strings.isNullOrEmpty(str);

Commons Lang иногда более читаем, но я постепенно всё больше полагаюсь на Guava, поскольку иногда Commons Lang может быть запутанным, особенно когда дело доходит до метода isBlank() (в том смысле, что непонятно, что считается пробелом, а что нет).

Версия метода isBlank из Guava будет:

Strings.nullToEmpty(str).trim().isEmpty();

Хочу отметить, что код, который не допускает "" (пустую строку) И null, вызывает подозрения и может содержать ошибки, так как, вероятно, не обрабатывает все случаи, когда запрет на null имеет смысл (хотя в случае SQL я могу понять, поскольку SQL/HQL странно относятся к '').

0

Ваш вопрос касательно проверки строки на null и на пустоту является очень распространенным в Java. Рассмотрим три способа, которые вы привели:

  1. str != null && str.length() != 0 - этот вариант является самым прямолинейным и простым для понимания. Он проверяет, что строка не равна null и что её длина не равна нулю.

  2. str != null && !str.equals("") - этот вариант также является правильным, однако стоит помнить, что метод equals вызывается на объекте str, поэтому в данном случае мы предварительно проверяем str на null.

  3. str != null && !"".equals(str) - этот вариант может быть предпочтительным. Он использует метод equals на строковом литерале "", что помогает избежать потенциального NullPointerException, если str окажется равной null.

Важно отметить, что для проверки на равенство строк в Java следует избегать оператора ==. Этот оператор сравнивает ссылки на объекты, а не их содержимое. Таким образом, два разных экземпляра строк могут находиться в разных адресах памяти, но при этом иметь одинаковое значение.

Подводя итог, все предложенные вами способы проверки корректны, однако последний вариант (!"".equals(str)) может быть более безопасным в контексте работы с возможным значением null.

0

Это работает для меня:

import com.google.common.base.Strings;

if (!Strings.isNullOrEmpty(myString)) {
       return myString;
}

Этот метод возвращает true, если переданная строка равна null или представляет собой пустую строку.

Рекомендуется нормализовать ваши строковые ссылки с помощью метода nullToEmpty. Если вы это сделаете, вы сможете использовать String.isEmpty() вместо этого метода, и вам не понадобятся специальные безопасные методы для работы с null, такие как String.toUpperCase(). Если же вы хотите нормализовать "в другую сторону", преобразуя пустые строки в null, вы можете воспользоваться методом emptyToNull.

0

В вашем примере проверка строки на null и на то, что она не пустая, выглядит хорошо. Однако, для улучшения читаемости и удобства использования, можно рассмотреть вариант с использованием библиотеки Apache Commons Lang. Например, метод StringUtils.isNotEmpty() может сделать ваш код более лаконичным:

import org.apache.commons.lang3.StringUtils;

if (StringUtils.isNotEmpty(str)) {
    // ваша логика здесь
}

Этот подход делает код более понятным и уменьшает вероятность ошибок, связанных с ручной проверкой на null и пустоту строки. Если вы не используете внешние библиотеки, то ваш исходный вариант также полностью допустим и корректен.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь