¿Cómo puedo verificar que Java String no sea un espacio en blanco?

Quiero comprobar que Java String o la matriz de caracteres no se compone solo de espacios en blanco, usando Java?

Esta es una pregunta muy similar, excepto que es Javascript:
¿Cómo puedo verificar si la cadena contiene caracteres y espacios en blanco, no solo espacios en blanco?

EDITAR : eliminé el bit sobre los caracteres alfanuméricos, por lo que tiene más sentido.

La solución más corta que puedo pensar:

 if (string.trim().length() > 0) ... 

Esto solo verifica el espacio (no) en blanco. Si desea verificar las clases de caracteres particulares, debe usar la poderosa match() con una expresión regular como, por ejemplo:

 if (string.matches(".*\\w.*")) ... 

… que verifica al menos un carácter alfanumérico (ASCII).

Usaría la biblioteca Apache Commons Lang. Tiene una clase llamada StringUtils que es útil para todo tipo de operaciones de Cadenas. Para verificar si una Cadena no abarca todos los espacios en blanco, puede usar lo siguiente:

 StringUtils.isBlank() 

Aquí está la referencia: StringUtils.isBlank

Un poco más corto de lo que Carl Smotricz mencionó:

 !string.trim().isEmpty(); 
 if(target.matches("\\S")) // then string contains at least one non-whitespace character 

Tenga en cuenta el uso de mayúsculas y minúsculas cap-S, que significa “carácter no blanco”

Apostaría a que esta es la solución más simple (¿y quizás la más rápida?).

Esta respuesta se centra más en la nota al margen ” es decir, tiene al menos un carácter alfanumérico “. Además de eso, no agrega demasiado a la otra solución (anterior), excepto que no te hace daño con NPE en caso de que el String sea null .

Queremos que sea false si (1) s es null o (2) s está vacío o (3) s solo contiene whitechars.

 public static boolean containsNonWhitespaceChar(String s) { return !((s == null) || "".equals(s.trim())); } 

Si solo está buscando espacios en blanco y no le importa null, puede usar org.apache.commons.lang.StringUtils.isWhitespace (String str),

StringUtils.isWhitespace(String str);

(Comprueba si la cadena contiene solo espacios en blanco).

Si también desea comprobar nulo (incluido el espacio en blanco), entonces

 StringUtils.isBlank(String str); 

El método de ajuste debería funcionar bien para usted.

http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/java/lang/String.html#trim ()

Devuelve una copia de la cadena, con el espacio en blanco inicial y final omitido. Si este objeto String representa una secuencia de caracteres vacía, o los caracteres primero y último de la secuencia de caracteres representados por este objeto String tienen códigos superiores a ‘\ u0020’ (el carácter espacio), se devuelve una referencia a este objeto String.

De lo contrario, si no hay un carácter con un código mayor que ‘\ u0020’ en la cadena, se creará y se devolverá un nuevo objeto String que represente una cadena vacía.

De lo contrario, sea k el índice del primer carácter de la cadena cuyo código sea mayor que ‘\ u0020’, y sea m el índice del último carácter de la cadena cuyo código sea mayor que ‘\ u0020’. Se crea un nuevo objeto String, que representa la subcadena de esta cadena que comienza con el carácter en el índice k y termina con el carácter en el índice m, es decir, el resultado de this.substring (k, m + 1).

Este método se puede usar para recortar espacios en blanco desde el principio y el final de una cadena; de hecho, recorta todos los caracteres de control ASCII también.

Devuelve: una copia de esta cadena con el espacio en blanco inicial y final eliminado, o esta cadena si no tiene espacio en blanco inicial o posterior. Espacio en blanco inicial o posterior.

Puede recortar y luego comparar con una cadena vacía o posiblemente verificar la longitud de 0.

Alternativa:

 boolean isWhiteSpaces( String s ) { return s != null && s.matches("\\s+"); } 

Con JDK / 11, ahora puede hacer uso de la API String.isBlank para verificar si la cadena dada no está compuesta por

 String str1 = " "; System.out.println(str1.isBlank()); // made up of all whitespaces, prints true String str2 = " a"; System.out.println(str2.isBlank()); // prints false 

El javadoc para el mismo es:

 /** * Returns {@code true} if the string is empty or contains only * {@link Character#isWhitespace(int) white space} codepoints, * otherwise {@code false}. * * @return {@code true} if the string is empty or contains only * {@link Character#isWhitespace(int) white space} codepoints, * otherwise {@code false} * * @since 11 */ public boolean isBlank() 

trim () y otras expresiones regulares mencionadas no funcionan para todos los tipos de espacios en blanco

es decir: carácter Unicode ‘LINE SEPARATOR’ http://www.fileformat.info/info/unicode/char/2028/index.htm

Funciones de Java Character.isWhitespace () cubre todas las situaciones.

Es por eso que se debe utilizar la solución ya mencionada StringUtils.isWhitespace (String) / o StringUtils.isBlank (String) .

Si está utilizando Java 8+, puede usar una secuencia para verificar que una cadena no sea solo un espacio en blanco:

 !s.chars().allMatch(Character::isWhitespace)); 

Además de no requerir ninguna biblioteca de terceros como Apache Commons Lang, esta solución tiene la ventaja de manejar cualquier carácter de espacio en blanco, y no solo espacios simples como lo haría una solución basada en trim en muchas otras respuestas. Puede consultar los Javadocs para obtener una lista exhaustiva de todos los tipos de espacios en blanco admitidos.

Tenga en cuenta que este método también cubre el caso en que la cadena está vacía, según la documentación de allMatch :

Si la transmisión está vacía, se devuelve verdadero y el predicado no se evalúa.