Какой лучший способ проверить, пуста ли строка, чем использование String.trim (). Length () в Java 5/6? - PullRequest
12 голосов
/ 28 апреля 2011

Вероятно, есть метод для возврата индекса первого непустого символа в строке в Java5 / 6.Но я не могу найти это больше.Инструмент anylizing кода говорит, что это лучше, чем проверка String.trim().length().

Ответы [ 10 ]

11 голосов
/ 28 апреля 2011

Мне всегда нравится использовать библиотеку Apache Commons StringUtils.Он имеет isEmpty () и isBlank (), который обрабатывает пробелы.

http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

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

8 голосов
/ 28 апреля 2011

Я бы использовал Гуава CharMatcher класс:

boolean onlyWhitespace = CharMatcher.WHITESPACE.matchesAllOf(input);
4 голосов
/ 06 мая 2011

Хорошо, ребята, я наконец-то нашел это из правил PMD InefficientEmptyStringCheck :

InefficientEmptyStringCheck:
С тех пор: PMD 3.6
String.trim ().length () - неэффективный способ проверить, действительно ли String пуста, так как он создает новый объект String просто для проверки его размера.Попробуйте создать статическую функцию, которая перебирает строку, проверяя Character.isWhitespace () для каждого символа и возвращая false, если найден непробельный символ.

Это только предложение от PMD.Принимать это или нет, зависит от того, какой приоритет имеет: эффективность программ или время программистов.

2 голосов
/ 15 марта 2019

Java 11 представляет метод isBlank.См. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#isBlank()

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

2 голосов
/ 28 апреля 2011

Если вы хотите проверить, содержит ли он только пробельные символы, вы можете использовать RegEx

string.matches("\\s*")

Считает, что это эффективнее, чем trim (). IsEmpty (), особенно если вы ожидаете пробелы и долгоСтроки, хотя я не уверен, сколько усилий требуется для компиляции RegEx.

2 голосов
/ 28 апреля 2011

Java 6 представила String.isEmpty(), так что вы можете использовать его вместе с String.trim().Вы также можете использовать регулярные выражения, например, используя такое условие: !str.matches("\\s*").

1 голос
/ 28 апреля 2011

Если вы хотите проверить строку, которая имеет нулевую длину, лучше использовать isEmpty() или length() == 0.

Если вы хотите проверить, содержит ли строка только пробелы, то поиск первого непробельного символа более эффективен, поскольку не создается промежуточный объект (как при trim())

Нов любом случае я тоже рекомендую Apache StringUtils.isEmpty(), так как все это прекрасно инкапсулируется.

0 голосов
/ 22 декабря 2016

попробуй

  str!=null && str.trim().isEmpty()
0 голосов
/ 28 апреля 2011

Для этой конкретной цели в String существует метод.

String emptyString = "";
emptyString.isEmpty();

Это вернет true.

0 голосов
/ 28 апреля 2011

(Лучший способ) string.equals("")

Но также,

string.isEmpty()

string.equals(null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...