¿Cómo puedo dividir una cadena con caracteres en blanco como delimitadores?

¿Qué patrón de expresiones regulares necesitaría pasar al método java.lang.String.split() para dividir una Cadena en una Matriz de subcadenas usando todos los caracteres de espacios en blanco (”, ‘\ t’, ‘\ n’, etc.) como delimitadores?

Algo en las líneas de

 myString.split("\\s+"); 

Esto agrupa todos los espacios en blanco como un delimitador.

Entonces si tengo la cadena:

"Hello[space][tab]World"

Esto debería producir las cadenas "Hello" y "World" y omitir el espacio vacío entre el [space] y la [tab] .

Como señaló VonC, la barra invertida debe ser escapada, porque Java primero tratará de escapar de la cadena a un carácter especial y lo enviará a analizar. Lo que quiere es el literal "\s" , lo que significa que debe pasar "\\s" . Puede ser un poco confuso.

El \\s es equivalente a [ \\t\\n\\x0B\\f\\r]

En la mayoría de los dialectos de expresiones regulares, hay un conjunto de cómodos resúmenes de caracteres que puede usar para este tipo de cosas; estas son buenas para recordar:

\w – Coincide con cualquier carácter de palabra.

\W – Coincide con cualquier caracter que no sea una palabra.

\s – Coincide con cualquier carácter de espacio en blanco.

\S : coincide con cualquier cosa que no sean caracteres de espacio en blanco.

\d – Coincide con cualquier dígito.

\D – Coincide con cualquier cosa excepto los dígitos.

Una búsqueda de “Cheatsheets Regex” debería recompensarlo con una gran cantidad de resúmenes útiles.

Para que esto funcione en Javascript , tuve que hacer lo siguiente:

 myString.split(/\s+/g) 

“\\ s +” debería hacer el truco

También puede tener un espacio UniCode sin interrupción xA0 …

 String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking 
 String string = "Ram is going to school"; String[] arrayOfString = string.split("\\s+"); 

Apache Commons Lang tiene un método para dividir una cadena con caracteres en espacios en blanco como delimitadores:

 StringUtils.split("abc def") 

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

Esto podría ser más fácil de usar que un patrón de expresiones regulares.

Dado que es una expresión regular, y supongo que tampoco querría caracteres no alfanuméricos como comas, puntos, etc. que pudieran estar rodeados de espacios en blanco (por ejemplo, “uno, dos” debería dar [uno] [dos]), debería ser:

 myString.split(/[\s\W]+/) 

Puede dividir una cadena por salto de línea usando la siguiente instrucción:

  String textStr[] = yourString.split("\\r?\\n"); 

puede dividir una cadena por espacio en blanco usando la siguiente instrucción:

 String textStr[] = yourString.split("\\s+"); 
 String str = "Hello World"; String res[] = str.split("\\s+"); 

Me sorprende que nadie haya mencionado String.split () sin parámetros. ¿No es eso para lo que está hecho? como en:

 "abc def ghi".split() 

Estudia este código … buena suerte

  import java.util.*; class Demo{ public static void main(String args[]){ Scanner input = new Scanner(System.in); System.out.print("Input String : "); String s1 = input.nextLine(); String[] tokens = s1.split("[\\s\\xA0]+"); System.out.println(tokens.length); for(String s : tokens){ System.out.println(s); } } }