Как проверить, что 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();

Ответ 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) следует использовать.