2012-08-08 63 views
9

¿Qué son los espacios en blanco en Java? Necesito verificar mi código si el texto contiene espacios en blanco.Espacios en blanco en Java

Mi código es:

if (text.contains(" ") || text.contains("\t") || text.contains("\r") 
     || text.contains("\n")) 
{ 
    //code goes here 
} 

ya que sé de \n, \t, \r y space.

+0

http://stackoverflow.com/questions/4731055/whitespace-matching-regex-java – perilbrain

+1

que tenía que cambiar una línea de código a 'si (Character.isWhitespace (text.charAt (i)) || Character.isSpaceChar (text.charAt (i))) {'para obtener los resultados que quería. – ericharlow

Respuesta

8
boolean containsWhitespace = false; 
for (int i = 0; i < text.length() && !containsWhitespace; i++) { 
    if (Character.isWhitespace(text.charAt(i)) { 
     containsWhitespace = true; 
    } 
} 
return containsWhitespace; 

o, usando la guayaba,

boolean containsWhitespace = CharMatcher.WHITESPACE.matchesAnyOf(text); 
+4

o ponlo en un método para devolver el booleano y evitar la incómoda variable 'break' y" accumulator ". – Thilo

+0

¿Habría alguna razón aquí para usar [Character # isWhitespace (int)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace (int)) en su lugar del sugerido [Character # isWhitespace (char)] (http://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace (char))? –

+0

@JB ¡Nizet no conocía la lib Guava! gracias – Tito

0

De sol docs:

\ s Un espacio en blanco: [\ t \ n \ x0B \ f \ r]

La forma más sencilla es utilizar con expresiones regulares.

+2

La * única * forma de usar '\ s' es con una expresión regular. – EJP

15

Para un enfoque de expresión no regular, puede marcar Character.isWhitespace para cada carácter.

boolean containsWhitespace(String s) { 
    for (int i = 0; i < s.length(); ++i) { 
     if (Character.isWhitespace(s.charAt(i)) { 
      return true; 
     } 
    } 
    return false; 
} 

¿Cuáles son los espacios en blanco en Java?

La documentación de Java especifica qué considera que es un espacio en blanco:

public static boolean isWhitespace(char ch)

determina si el carácter especificado es el espacio en blanco de acuerdo a Java. Un carácter es un carácter de espacio en blanco de Java si y sólo si satisface uno de los siguientes criterios:

  • Es un carácter de espacio Unicode (SPACE_SEPARATOR, LINE_SEPARATOR o PARAGRAPH_SEPARATOR), pero no es también un espacio de no separación ('\ u00A0', '\ u2007', '\ u202F').
  • Es '\u0009', TABULACIÓN HORIZONTAL.
  • Es '\u000A', ALIMENTACIÓN DE LÍNEA.
  • Es '\u000B', TABULACIÓN VERTICAL.
  • Es '\u000C', FORM FEED.
  • Es '\u000D', CARRIAGE RETURN.
  • Es '\u001C', SEPARADOR DE ARCHIVOS.
  • Es '\u001D', SEPARADOR DE GRUPO.
  • Es '\u001E', SEPARADOR DE REGISTRO.
  • Es '\u001F', UNIDAD SEPARADOR.
-1

Si usted quiere considerar una forma basada en expresiones regulares de hacerlo

if(text.split("\\s").length > 1){ 
    //text contains whitespace 
} 
0
boolean whitespaceSearchRegExp(String input) { 

    return java.util.regex.Pattern.compile("\\s").matcher(input).find(); 

} 
+2

Bienvenido en SO. Por favor, consulte la guía para dar una buena respuesta. http://stackoverflow.com/help/how-to-answer – codingadventures

2

Si es posible use apache.commons.lang en su p royecto, la manera más fácil sería simplemente usar el método siempre que:

public static boolean containsWhitespace(CharSequence seq) 

Compruebe si el CharSequence dado contiene ningún carácter de espacio en blanco.

Parámetros:

seq - the CharSequence to check (may be null) 

Devuelve:

true if the CharSequence is not empty and contains at least 1 whitespace character 

Maneja parámetros vacíos y nulos y proporciona la funcionalidad en un lugar central.

0

¿Por qué no comprueba si text.trim() tiene una longitud diferente? :

if(text.length() == text.trim().length() || otherConditions){ 
    //your code 
} 
+0

Porque crea otro 'String', para empezar. – EJP

Cuestiones relacionadas