Как проверить, что Java String не все пробелы?
Я хочу проверить, что Java String или массив символов не просто состоят из пробелов, используя Java?
Это очень похожий вопрос, кроме Javascript:
Как проверить, содержит ли строка символы и пробелы, а не просто пробелы?
EDIT: я удалил бит о буквенно-цифровых символах, поэтому имеет смысл.
Ответы
Ответ 1
Самое короткое решение, о котором я могу думать:
if (string.trim().length() > 0) ...
Это проверяет только пробел (не). Если вы хотите проверить определенные классы символов, вам нужно использовать могучий match()
с регулярным выражением, например:
if (string.matches(".*\\w.*")) ...
..., который проверяет хотя бы один (ASCII) буквенно-цифровой символ.
Ответ 2
Я бы использовал библиотеку Apache Commons Lang. Он имеет класс StringUtils, который полезен для всех видов операций String. Для проверки того, что String не все пробелы, вы можете использовать следующее:
StringUtils.isBlank(<your string>)
Вот ссылка: StringUtils.isBlank
Ответ 3
Слегка короче, чем упоминал Карл Смотрич:
!string.trim().isEmpty();
Ответ 4
StringUtils.isBlank(CharSequence)
https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/StringUtils.html#isBlank-java.lang.CharSequence-
Ответ 5
if(target.matches("\\S"))
// then string contains at least one non-whitespace character
Обратите внимание на использование обратного слеша-шапки-S, что означает "не-whitespace char"
Я бы сказал, что это самое простое (и, возможно, самое быстрое?) решение.
Ответ 6
Этот ответ больше фокусируется на боковом "то есть имеет хотя бы один буквенно-цифровой символ". Кроме того, он не добавляет слишком много другого (более раннего) решения, за исключением того, что это не повредит вам NPE, если String null
.
Мы хотим false
, если (1) s равно null
или (2) s пусто или (3) s содержит только белые символы.
public static boolean containsNonWhitespaceChar(String s) {
return !((s == null) || "".equals(s.trim()));
}
Ответ 7
Если вы только проверяете пробелы и не заботитесь об нуле, то вы можете использовать org.apache.commons.lang.StringUtils.isWhitespace(String str),
StringUtils.isWhitespace(String str);
(Проверяет, содержит ли строка только пробелы.)
Если вы также хотите проверить значение null (включая пробелы), то
StringUtils.isBlank(String str);
Ответ 8
Метод обрезки должен отлично работать для вас.
http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/java/lang/String.html#trim()
Возвращает копию строки, с ведущие и конечные пробелы опущено. Если этот объект String представляет собой пустой символ последовательности или первой и последней символы последовательности символов представленный этим объектом String как имеют коды, превышающие '\ u0020' ( пробел), то ссылка на этот объект String возвращается.
В противном случае, если нет символа с кодом, большим, чем '\ u0020' в строка, затем новый объект String представляющая пустую строку, создан и возвращен.
В противном случае пусть k - индекс первый символ в строке код больше, чем '\ u0020', и пусть m - индекс последнего символа в строке, код которой больше чем '\ u0020'. Новый объект String созданный, представляющий подстроку эта строка, которая начинается с символа с индексом k и заканчивается символ с индексом m, т.е. результат this.substring(k, m + 1).
Этот метод можно использовать для обрезки пробелы с начала и конца строки; Фактически, он обрезает все ASCII управляющие символы.
Возвраты: копия этой строки с ведущее и конечное пустое пространство удаляется или эта строка, если она не имеет переднего или заднего пробела. Задание или пробел пробела.
Вы можете обрезать, а затем сравнить с пустой строкой или, возможно, проверить длину для 0.
Ответ 9
Альтернатива:
boolean isWhiteSpaces( String s ) {
return s != null && s.matches("\\s+");
}
Ответ 10
trim() и другое указанное регулярное выражение не работают для всех типов пробелов
i.e: Unicode Character 'LINE SEPARATOR' http://www.fileformat.info/info/unicode/char/2028/index.htm
Функции Java Character.isWhitespace() охватывает все ситуации.
Вот почему уже упомянутое решение
StringUtils.isWhitespace(String) /или StringUtils.isBlank(String)
следует использовать.