Проверьте, не является ли строка не нулевой и не пустой - PullRequest
451 голосов
/ 30 августа 2010

Как я могу проверить, не является ли строка нулевой и не пустой?

public void doStuff(String str)
{
    if (str != null && str != "**here I want to check the 'str' is empty or not**")
    {
        /* handle empty string */
    }
    /* ... */
}

Ответы [ 30 ]

5 голосов
/ 29 апреля 2013

Если вы не хотите включать всю библиотеку; просто включите код, который вы хотите от него. Вы должны будете поддержать это самостоятельно; но это довольно простая функция. Вот это скопировано с commons.apache.org

<code>    /**
 * <p>Checks if a String is whitespace, empty ("") or null.</p>
 *
 * <pre>
 * StringUtils.isBlank(null)      = true
 * StringUtils.isBlank("")        = true
 * StringUtils.isBlank(" ")       = true
 * StringUtils.isBlank("bob")     = false
 * StringUtils.isBlank("  bob  ") = false
 * 
* * @param str строка для проверки, может быть нулевой * @return true если строка пуста или пуста * @since 2.0 * / public static boolean isBlank (String str) { int strLen; if (str == null || (strLen = str.length ()) == 0) { вернуть истину; } for (int i = 0; i
5 голосов
/ 25 января 2018

Возвращает true или false на основании ввода

Predicate<String> p = (s)-> ( s != null && !s.isEmpty());
p.test(string);
5 голосов
/ 07 июня 2017

Слишком поздно, но вот функциональный стиль проверки:

Optional.ofNullable(str)
    .filter(s -> !(s.trim().isEmpty()))
    .ifPresent(result -> {
       // your query setup goes here
    });
4 голосов
/ 28 июня 2018

Существует новый метод в : String#isBlank

Возвращает true, если строка пуста или содержит только пробельные кодовые точки, в противном случае false.

jshell> "".isBlank()
$7 ==> true

jshell> " ".isBlank()
$8 ==> true

jshell> " ! ".isBlank()
$9 ==> false

Это может быть объединено с Optional для проверки, является ли строка нулевой или пустой

boolean isNullOrEmpty = Optional.ofNullable(str).map(String::isBlank).orElse(true);

Строка # ISBLANK

3 голосов
/ 15 мая 2013

test равно пустой строке и null в том же условном выражении:

if(!"".equals(str) && str != null) {
    // do stuff.
}

Не выбрасывает NullPointerException, если str равно нулю, поскольку Object.equals() возвращает false, если аргументравно null.

, другая конструкция str.equals("") будет выбрасывать страшные NullPointerException.Кто-то может подумать о плохой форме, используя строковый литерал в качестве объекта, который вызывается equals(), но он выполняет свою работу.

Также проверьте этот ответ: https://stackoverflow.com/a/531825/1532705

3 голосов
/ 14 июля 2016

Простое решение:

private boolean stringNotEmptyOrNull(String st) {
    return st != null && !st.isEmpty();
}
2 голосов
/ 30 августа 2010

Как сказал выше seanizer, Apache StringUtils отлично подходит для этого, если вы включите гуаву, вы должны сделать следующее:

public List<Employee> findEmployees(String str, int dep) {
 Preconditions.checkState(StringUtils.isNotBlank(str), "Invalid input, input is blank or null");
 /** code here **/
}

Могу ли я также порекомендовать вам ссылаться на столбцы в наборе результатов по имени, а не по индексу, это облегчит поддержку вашего кода.

2 голосов
/ 15 ноября 2013

Я сделал свою собственную служебную функцию для проверки нескольких строк одновременно, вместо того, чтобы иметь оператор if, полный if(str != null && !str.isEmpty && str2 != null && !str2.isEmpty).Это функция:

public class StringUtils{

    public static boolean areSet(String... strings)
    {
        for(String s : strings)
            if(s == null || s.isEmpty)
                return false;

        return true;
    }   

}

, поэтому я могу просто написать:

if(!StringUtils.areSet(firstName,lastName,address)
{
    //do something
}
1 голос
/ 23 января 2018

Если вы используете Java 8 и хотите иметь более функциональный подход к программированию, вы можете определить Function, который управляет элементом управления, а затем вы можете повторно использовать его и apply(), когда это необходимо.

Приступая к практике, вы можете определить Function как

Function<String, Boolean> isNotEmpty = s -> s != null && !"".equals(s)

Затем вы можете использовать его, просто вызвав метод apply() как:

String emptyString = "";
isNotEmpty.apply(emptyString); // this will return false

String notEmptyString = "StackOverflow";
isNotEmpty.apply(notEmptyString); // this will return true

Если вы предпочитаетеВы можете определить Function, который проверяет, является ли String пустым, а затем отрицать его с помощью !.

. В этом случае Function будет выглядеть следующим образом:

Function<String, Boolean> isEmpty = s -> s == null || "".equals(s)

Затем вы можете использовать его, просто вызвав метод apply() как:

String emptyString = "";
!isEmpty.apply(emptyString); // this will return false

String notEmptyString = "StackOverflow";
!isEmpty.apply(notEmptyString); // this will return true
1 голос
/ 12 февраля 2014

Вы можете использовать StringUtils.isEmpty (), это будет иметь значение true, если строка пуста или пуста.

 String str1 = "";
 String str2 = null;

 if(StringUtils.isEmpty(str)){
     System.out.println("str1 is null or empty");
 }

 if(StringUtils.isEmpty(str2)){
     System.out.println("str2 is null or empty");
 }

приведет к

str1 является нулевым или пустым

str2 является нулевым или пустым

...