Cómo dividir una cadena con espacios en blanco como delimitadores
¿Qué patrón de expresiones regulares necesitaría pasar para java.lang.String.split()
dividir una cadena en una matriz de subcadenas usando todos los caracteres de espacio en blanco ( ,, ' '
etc. ) como delimitadores?'\t'
'\n'
Algo en las líneas de
myString.split("\\s+");
Esto agrupa todos los espacios en blanco como delimitador.
Entonces si tengo la cadena:
"Hello[space character][tab character]World"
Esto debería producir las cadenas "Hello"
y "World"
omitir el espacio vacío entre [space]
y [tab]
.
Como señaló VonC, la barra invertida debe tener un carácter de escape, porque Java primero intentaría convertir la cadena en un carácter especial y lo enviaría para su análisis. Lo que quieres es el literal "\s"
, lo que significa que debes pasar "\\s"
. Puede resultar 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 resúmenes de caracteres convenientes que puedes usar para este tipo de cosas; estos son buenos para recordar:
\w
- Coincide con cualquier carácter de palabra.
\W
- Coincide con cualquier carácter que no sea una palabra.
\s
- Coincide con cualquier carácter de espacio en blanco.
\S
- Coincide con cualquier cosa excepto caracteres de espacios en blanco.
\d
- Coincide con cualquier dígito.
\D
- Coincide con cualquier cosa excepto dígitos.
Una búsqueda de "Regex Cheatsheets" 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)