Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Java: проверьте, является ли строка пустой, пустой или пустой
Введение В Java существует четкое различие между пустыми, пустыми и пустыми строками. * Пустая строка — это объект String с присвоенным значением, но его длина равна нулю. * Пустая строка вообще не имеет значения. * Пустая строка содержит только пробелы, не является ни пустой, ни нулевой, поскольку ей присвоено значение и ее длина не равна 0. Строка nullString = null; Строка emptyString = ""; Строка blankString = ""; В этом уроке мы рассмотрим, как проверить,
Время чтения: 4 мин.
Вступление
В Java существует четкая разница между null , пустыми и пустыми строками.
- Пустая строка — это String с присвоенным значением, но его длина равна нулю.
- null строка вообще не имеет значения.
- Пустая строка содержит только пробелы , не является ни пустой, ни null , поскольку ей присвоено значение и ее длина 0
String nullString = null; String emptyString = ""; String blankString = " ";
В этом руководстве мы рассмотрим, как проверить, является ли String пустым, пустым или пустым в Java :
- Использование длины строки
- Использование метода String.isEmpty ()
- Использование метода String.equals ()
- Использование класса StringUtils
Использование длины строки
Как упоминалось ранее, строка пуста, если ее длина равна нулю. Мы будем использовать метод length() , который возвращает общее количество символов в нашей строке.
String blankString = " "; if(blankString == null || blankString.length() == 0) System.out.println("This string is null or empty"); else System.out.println("This string is neither null nor empty");
Приведенный выше код даст следующий результат:
This string is null or empty
Строка является пустой, так что , очевидно , ни null , ни пустой. Теперь, основываясь только на длину, мы можем на самом деле не различать между строками , которые содержат только пробельную или любой другой символ, поскольку пробел является Character .
Примечание. Важно сначала null проверку, поскольку оператор короткого замыкания ИЛИ || немедленно сломается при первом true условии. Если строка фактически имеет значение null , все остальные условия перед ней NullPointerException .
Использование метода isEmpty ()
Метод isEmpty() возвращает true или false зависимости от того, содержит ли наша строка какой-либо текст. Его легко объединить в цепочку с помощью string == null и даже можно различать пустые и пустые строки:
String string = "Hello there"; if (string == null || string.isEmpty() || string.trim().isEmpty()) System.out.println("String is null, empty or blank."); else System.out.println("String is neither null, empty nor blank");
Метод trim() удаляет все пробелы слева и справа от String и возвращает новую последовательность. Если строка пуста , после удаления всех пробелов она будет пустой, поэтому isEmpty() вернет true .
Запуск этого фрагмента кода даст нам следующий результат:
String is neither null, empty nor blank
Использование метода equals ()
Метод equals() сравнивает две заданные строки на основе их содержимого и возвращает true если они равны, или false если нет:
String string = "Hello there"; if(string == null || string.equals("") || string.trim().equals("")) System.out.println("String is null, empty or blank"); else System.out.println("String is neither null, empty nor blank");
Примерно так же, как и раньше, если обрезанная строка — «» , она либо была пустой с самого начала, либо была пустой строкой с 0..n :
String is neither null, empty nor blank
Использование класса StringUtils
Apache Commons — популярная библиотека Java, обеспечивающая дополнительные функции. StringUtils — один из классов, которые предлагает Apache Commons. Этот класс содержит методы, используемые для работы со Strings , аналогичные java.lang.String .
Если вы не знакомы с вспомогательными классами Apache Commons, мы настоятельно рекомендуем прочитать нашеРуководство по классу StringUtils .
Поскольку для этого подхода мы будем использовать Apache Commons, давайте добавим его как зависимость:
org.apache.commons commons-lang3 3.11
Или, если вы используете Gradle:
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
Одно из ключевых различий между StingUtils и String заключается в том, что все методы из класса StringUtils являются нулевыми . Он дополнительно предоставляет несколько методов, которые мы можем использовать для этого, включая StringUtils.isEmpty() и StringUtils.isBlank() :
String nullString = null; if(nullString == null) < System.out.println("String is null"); >else if(StringUtils.isEmpty(nullString)) < System.out.println("String is empty"); >else if(StringUtils.isBlank(nullString))
String is null
В дополнение к ним также существуют их обратные StringUtils.isNotEmpty() и StringUtils.isNotBlank() , однако вы можете достичь той же функциональности, используя ! ):
if(StringUtils.isNotEmpty("")) System.out.println("String is not empty"); // Equivalent to if(!StringUtils.isEmpty("")) System.out.println("String is not empty");
Заключение
Строка — это объект, представляющий последовательность символов. Java предоставляет множество различных методов для обработки строк. В этой статье мы использовали некоторые из этих методов, такие как isEmpty() , equals() , StringUtils.isEmpty() и length() чтобы проверить, является ли String null , пустым или пустым.
Licensed under CC BY-NC-SA 4.0
Проверьте, является ли строка пустой или нулевой в Java
В этом посте будет обсуждаться, как проверить, является ли строка пустой или нулевой в Java. Обратите внимание, что строка пуста тогда и только тогда, когда ее длина равна 0.
1. Использование String.isEmpty() метод
Начиная с Java 7, рекомендуется использовать String.isEmpty() метод проверки наличия пустой строки в Java. Избегать NullPointerException если строка равна null, вызову метода должна предшествовать проверка null.
Работа со строками
Строка представляет собой последовательность символов. Для работы со строками в Java определен класс String, который предоставляет ряд методов для манипуляции строками. Физически объект String представляет собой ссылку на область в памяти, в которой размещены символы.
Для создания новой строки мы можем использовать один из конструкторов класса String, либо напрямую присвоить строку в двойных кавычках:
public static void main(String[] args) < String str1 = "Java"; String str2 = new String(); // пустая строка String str3 = new String(new char[] ); String str4 = new String(new char[], 3, 4);//3 -начальный индекс, 4 -кол-во символов System.out.println(str1); // Java System.out.println(str2); // System.out.println(str3); // hello System.out.println(str4); // come >
При работе со строками важно понимать, что объект String является неизменяемым ( immutable ). То есть при любых операциях над строкой, которые изменяют эту строку, фактически будет создаваться новая строка.
Поскольку строка рассматривается как набор символов, то мы можем применить метод length() для нахождения длины строки или длины набора символов:
String str1 = "Java"; System.out.println(str1.length()); // 4
А с помощью метода toCharArray() можно обратно преобразовать строку в массив символов:
String str1 = new String(new char[] ); char[] helloArray = str1.toCharArray();
Строка может быть пустой. Для этого ей можно присвоить пустые кавычки или удалить из стоки все символы:
String s = ""; // пустая строка if(s.length() == 0) System.out.println("String is empty");
В этом случае длина строки, возвращаемая методом length(), равна 0.
Класс String имеет специальный метод, который позволяет проверить строку на пустоту — isEmpty() . Если строка пуста, он возвращает true:
String s = ""; // пустая строка if(s.isEmpty()) System.out.println("String is empty");
Переменная String может не указывать на какой-либо объект и иметь значение null :
String s = null; // строка не указывает на объект if(s == null) System.out.println("String is null");
Значение null не эквивалентно пустой строке. Например, в следующем случае мы столкнемся с ошибкой выполнения:
String s = null; // строка не указывает на объект if(s.length()==0) System.out.println("String is empty"); // ! Ошибка
Так как переменная не указывает ни на какой объект String, то соответственно мы не можем обращаться к методам объекта String. Чтобы избежать подобных ошибок, можно предварительно проверять строку на null:
String s = null; // строка не указывает на объект if(s==null || s.length()==0) System.out.println("String is empty");
Основные методы класса String
Основные операции со строками раскрывается через методы класса String, среди которых можно выделить следующие:
- concat() : объединяет строки
- valueOf() : преобразует объект в строковый вид
- join() : соединяет строки с учетом разделителя
- сompareTo() : сравнивает две строки
- charAt() : возвращает символ строки по индексу
- getChars() : возвращает группу символов
- equals() : сравнивает строки с учетом регистра
- equalsIgnoreCase() : сравнивает строки без учета регистра
- regionMatches() : сравнивает подстроки в строках
- indexOf() : находит индекс первого вхождения подстроки в строку
- lastIndexOf() : находит индекс последнего вхождения подстроки в строку
- startsWith() : определяет, начинается ли строка с подстроки
- endsWith() : определяет, заканчивается ли строка на определенную подстроку
- replace() : заменяет в строке одну подстроку на другую
- trim() : удаляет начальные и конечные пробелы
- substring() : возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса
- toLowerCase() : переводит все символы строки в нижний регистр
- toUpperCase() : переводит все символы строки в верхний регистр
Разберем работу этих методов.
Строковые непустые тестовые утверждения в Java
В некоторых сценариях нам нужно утверждать, пуста ли данная строка или нет. В Java существует довольно много способов сделать такие утверждения.
Давайте рассмотрим некоторые из этих методов проверки утверждений в этом кратком руководстве.
2. Зависимости Maven
Сначала нам нужно получить несколько зависимостей. В проекте Maven мы можем добавить следующие зависимости к pom.xml :
dependency> groupId>junitgroupId> artifactId>junitartifactId> version>4.12version> dependency>
dependency> groupId>org.hamcrestgroupId> artifactId>hamcrest-coreartifactId> version>1.3version> dependency>
dependency> groupId>org.apache.commonsgroupId> artifactId>commons-lang3artifactId> version>3.12.0version> dependency>
dependency> groupId>org.assertjgroupId> artifactId>assertj-coreartifactId> version>3.11.1version> dependency>
dependency> groupId>com.google.guavagroupId> artifactId>guavaartifactId> version>31.0.1-jreversion> dependency>
3. Использование JUnit
Мы будем использовать метод isEmpty из класса String вместе с классом Assert из JUnit, чтобы проверить, не пуста ли данная строка . Поскольку метод isEmpty возвращает true, если входная строка пуста, мы можем использовать его вместе с методом assertFalse :
assertFalse(text.isEmpty());
Или мы также можем использовать:
assertTrue(!text.isEmpty());
Поскольку text может быть нулевым, другим способом является проверка на равенство с помощью метода assertNotEquals :
assertNotEquals("", text);
assertNotSame("", text);
Ознакомьтесь с нашим подробным руководством по утверждениям JUnit здесь .
Все эти утверждения в случае неудачи вернут AssertionError.
4. Использование ядра Hamcrest
Hamcrest — это хорошо известная платформа, предоставляющая средства сопоставления, которые обычно используются для модульного тестирования в экосистеме Java.
Мы можем использовать класс Hamcrest CoreMatchers для проверки пустой строки :
assertThat(text, CoreMatchers.not(isEmptyString()));
Метод isEmptyString доступен в классе IsEmptyString .
Это также возвращает AssertionError при сбое, но с более полезным выводом:
java.lang.AssertionError: Expected: not an empty string but: was ""
При необходимости, чтобы убедиться, что строка не является ни пустой, ни нулевой, мы можем использовать isEmptyOrNullString :
assertThat(text, CoreMatchers.not(isEmptyOrNullString()));
Чтобы узнать о других методах класса CoreMatchers , прочитайте эту ранее опубликованную статью.
5. Использование Apache Commons Lang
Библиотека Apache Commons Lang предоставляет множество вспомогательных утилит для API java.lang .
Класс StringUtils предлагает метод, который мы можем использовать для проверки пустых строк :
assertTrue(StringUtils.isNotBlank(text));
В случае сбоя это возвращает простой AssertionError.
Чтобы узнать больше об обработке строк с помощью Apache Commons Lang, прочитайте эту статью.
6. Использование AssertJ
AssertJ — это библиотека с открытым исходным кодом, управляемая сообществом, используемая для написания плавных и насыщенных утверждений в тестах Java.
Метод AbstractCharSequenceAssert.isNotEmpty() проверяет, что фактический CharSequence не пуст, или, другими словами, что он не равен null и имеет длину 1 или более :
Assertions.assertThat(text).isNotEmpty()
В случае сбоя это печатает вывод:
java.lang.AssertionError: Expecting actual not to be empty
У нас есть хорошая вводная статья по AssertJ здесь .
7. Использование Google Гуавы
Guava — это набор основных библиотек, предлагаемых Google.
Метод isNullOrEmpty из класса Guava Strings можно использовать для проверки того, является ли строка пустой (или нулевой):
assertFalse(Strings.isNullOrEmpty(text));
Это также возвращает AssertionError при сбое без другого выходного сообщения.
Чтобы изучить другие наши статьи об API Guava, перейдите по ссылке здесь .
8. Заключение
В этом кратком руководстве мы узнали, как утверждать, является ли данная строка пустой или нет.
Как всегда, полный фрагмент кода доступен на GitHub .
