Как я могу проверить, является ли строка не нулевой и не пустой?
public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
java
string
string-comparison
Бернхард Баркер
источник
источник
PreparedStatement
и такое вместо того, чтобы создавать запрос SQL с помощью примитивов конкатенации строк. Предотвращает все виды инъекционных уязвимостей, гораздо более читабельны и т. Д.Ответы:
Что насчет isEmpty () ?
Обязательно используйте части
&&
в этом порядке, потому что java не будет выполнять оценку второй части, если первая часть&&
потерпит неудачу, таким образом гарантируя, что вы не получите исключение нулевого указателя изstr.isEmpty()
ifstr
is null.Осторожно, он доступен только с Java SE 1.6. Вы должны проверить
str.length() == 0
на предыдущих версиях.Чтобы также игнорировать пробелы:
(поскольку Java 11
str.trim().isEmpty()
может быть уменьшена доstr.isBlank()
который также будет проверять другие пробелы Юникода)Завернут в удобную функцию:
становится:
источник
isEmpty()
требуется экземпляр String (нестатический). Вызов этого для нулевой ссылки вызовет исключение NullPointerException.TextUtils.isEmpty(String)
для проверки, является ли строка пустой или нулевой. Хороший и короткий. Класс TextUtils является частью Android SDK.(str != null && str.length() > 0)
.Используйте org.apache.commons.lang.StringUtils
Мне нравится использовать Apache commons-lang для таких вещей, особенно для класса утилит StringUtils :
источник
isEmpty
илиisBlank
, может быть, не стоит включать стороннюю библиотеку. Вы можете просто создать свой собственный служебный класс для предоставления такого метода. Однако, как объясняет Божо,commons-lang
проект предоставляет много полезных методов!StringUtils.isNotBlank(str)
делает нуль-проверку.Просто добавьте Android здесь:
источник
Чтобы добавить к @BJorn и @SeanPatrickFloyd Guava способ сделать это:
Временами Commons Lang читается лучше, но я все больше полагаюсь на Гуаву, и иногда Commons Lang сбивает с толку, когда дело доходит до
isBlank()
(например, что такое пробел или нет).Версия Commons Lang для Guava
isBlank
:Я скажу, что код, который не допускает
""
(пустой) AND,null
является подозрительным и потенциально ошибочным, поскольку он, вероятно, не обрабатывает все случаи, когда запрещениеnull
имеет смысл (хотя для SQL я могу понять, что SQL / HQL странный вопрос''
).источник
альтернативно
или
Примечание. Вторая проверка (первая и вторая альтернативы) предполагает, что str не равен нулю. Это нормально только потому, что первая проверка делает это (а Java не выполняет вторую проверку, если первая ложна)!
ВАЖНО: НЕ используйте == для равенства строк. == проверяет, равен ли указатель, а не значение. Две строки могут быть в разных адресах памяти (два экземпляра), но иметь одинаковое значение!
источник
Почти каждая библиотека, которую я знаю, определяет служебный класс, называемый
StringUtils
,StringUtil
илиStringHelper
, и они обычно включают в себя метод, который вы ищете.Мой личный фаворит - Apache Commons / Lang , где в классе StringUtils вы получаете оба(Первая проверяет, является ли строка пустой или пустой, вторая проверяет, является ли она пустой, пустой или только пробелом)
В Spring, Wicket и многих других библиотеках есть схожие утилиты. Если вы не используете внешние библиотеки, вы можете захотеть ввести класс StringUtils в свой собственный проект.Прошло много лет, и в эти дни я бы рекомендовал использовать: Update Guava «s
Strings.isNullOrEmpty(string)
метод.источник
Это работает для меня:
источник
Как насчет:
источник
&&
if str == null, тем самым предотвращая исключение NullPointerException. (Источник: я только что попробовал)Используйте метод isNotBlank от Apache StringUtils, например
Он вернет true только в том случае, если str не является нулевым и не пустым.
источник
Вы должны использовать
org.apache.commons.lang3.StringUtils.isNotBlank()
илиorg.apache.commons.lang3.StringUtils.isNotEmpty
. Решение между этими двумя основано на том, что вы действительно хотите проверить.В isNotBlank () проверяет , что входной параметр является:
IsNotEmpty () проверяет только то , что входной параметр является
источник
Возвращает истину или ложь на основе ввода
источник
Если вы не хотите включать всю библиотеку; просто включите код, который вы хотите от него. Вы должны будете поддержать это самостоятельно; но это довольно простая функция. Вот это скопировано с commons.apache.org
источник
Слишком поздно, но вот функциональный стиль проверки:
источник
Есть новый метод в Java-11:
String#isBlank
Это может быть объединено с
Optional
проверкой, является ли строка нулевой или пустойСтрока # ISBLANK
источник
test равен пустой строке и null в том же условном выражении:
Не выдает,
NullPointerException
если str равен нулю, так какObject.equals()
возвращает false, если аргумент равенnull
.другая конструкция
str.equals("")
бросила бы страшныхNullPointerException
. Некоторые могут подумать о плохой форме, используя строковый литерал в качестве объекта, которыйequals()
вызывается, но он выполняет свою работу.Также проверьте этот ответ: https://stackoverflow.com/a/531825/1532705
источник
str != null
.!"".equals(str)
уже делаю работуПростое решение:
источник
Как сказал выше seanizer, Apache StringUtils отлично подходит для этого, если вы включите гуаву, вы должны сделать следующее;
Могу ли я также порекомендовать вам ссылаться на столбцы в наборе результатов по имени, а не по индексу, это облегчит поддержку вашего кода.
источник
Я сделал свою собственную служебную функцию для проверки нескольких строк одновременно, вместо того, чтобы заполнять оператор if
if(str != null && !str.isEmpty && str2 != null && !str2.isEmpty)
. Это функция:так что я могу просто написать:
источник
areSet(String... strings)
затем можно вызывать без создания массива:if(!StringUtils.areSet(firstName, lastName, address))
Если вы используете Java 8 и хотите иметь более функциональный подход к программированию, вы можете определить элемент
Function
управления, который будет управлять элементом управления, а затем использовать его повторно иapply()
всякий раз, когда это необходимо.Приступая к практике, вы можете определить
Function
какЗатем вы можете использовать его, просто вызвав
apply()
метод как:Если вы предпочитаете, вы можете определить,
Function
что проверяет,String
является ли пустым, а затем отрицать его!
.В этом случае
Function
будет выглядеть так:Затем вы можете использовать его, просто вызвав
apply()
метод как:источник
С Java 8 дополнительно вы можете сделать:
В этом выражении вы будете обрабатывать
String
s, которые также состоят из пробелов.источник
Вы можете использовать StringUtils.isEmpty (), он будет иметь значение true, если строка является пустой или пустой.
приведет к
str1 является нулевым или пустым
str2 является нулевым или пустым
источник
isNotBlank
Я бы посоветовал Guava или Apache Commons в соответствии с вашими потребностями. Проверьте различные варианты поведения в моем примере кода:
Результат:
Apache:
a пусто
b пусто
c пусто
Google:
b равно NullOrEmpty
c равно NullOrEmpty
источник
Если вы используете Spring Boot, то нижеприведенный код сделает работу
источник
Для полноты: если вы уже используете среду Spring , StringUtils предоставляет метод
а также метод
источник
Просто игнорировать также и пробел:
источник
Если вы используете Spring Framework, то вы можете использовать метод:
Этот метод принимает любой объект в качестве аргумента, сравнивая его с нулем и пустой строкой. Как следствие, этот метод никогда не вернет true для ненулевого не-строкового объекта.
источник
StringUtils
явно указано «В основном для внутреннего использования в рамках; рассмотрим Apache Commons Lang для более полного набора утилит String».Лучший способ обработать нуль в строке:
Короче говоря,
источник
Проверить, все ли строковые атрибуты в объекте пусты (вместо использования! = Null во всех именах полей в соответствии с подходом API Java-отражения)
Этот метод возвратил бы true, если все значения поля String являются пустыми, Он возвратил бы false, если в атрибутах String присутствует какое-либо одно значение
источник
Я столкнулся с ситуацией, когда я должен проверить, что «ноль» (как строка) должен рассматриваться как пустой. Также пробел и фактический нуль должны возвращать true. Я наконец остановился на следующей функции ...
источник
Если вам нужно проверить параметры вашего метода, вы можете использовать следующий простой метод
Пример:
источник