¿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 espacio en blanco ('', '\ t', '\ n', etc.) como delimitadores?¿Cómo puedo dividir una cadena con caracteres en blanco como delimitadores?
Respuesta
Algo en las líneas de
myString.split("\\s+");
Esto agrupa todos los espacios en blanco como un delimitador.
Así que si tengo la cadena:
"Hello[space][tab]World"
Esto debería producir las cuerdas "Hello"
y "World"
y omitir el espacio vacío entre el [space]
y la [tab]
.
Como señaló VonC, la barra diagonal inversa debe ser escapada, porque Java primero intentará escapar de la cadena a un carácter especial, y enviará que se 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]
"\\ s +" debe hacer el truco
Por qué el + al final? – Floella
@Anarelle repite la captura del personaje espacial al menos una vez, y el mayor tiempo posible: ver [https://regex101.com/r/dT7wG9/1](https://regex101.com/r/dT7wG9/1) o [http://rick.measham.id.au/paste/explain.pl?regex=\s%2B] (http: //rick.measham.id.au/paste/explain.pl? regex = \ s% 2B) o [http://regexper.com/#^s%2B](http://regexper.com/#^s%2B) o [http://www.myezapp.com/apps/dev /regexp/show.ws?regex=\s+&env=env_java](http://www.myezapp.com/apps/dev/regexp/show.ws?regex=\s+&env=env_java) – VonC
En la mayoría de los dialectos de expresiones regulares no son un conjunto de carácter práctico resúmenes se pueden utilizar para este tipo de cosas - estos son buenos para recordar:
\w
- Coincide con cualquier personaje de palabra.
\W
- Coincide con cualquier caracter que no sea una palabra.
\s
- Coincide con cualquier carácter de espacio en blanco.
\S
- Encuentra cualquier cosa que no sean espacios en blanco.
\d
- Coincide con cualquier número.
\D
- Empareja cualquier cosa excepto los dígitos.
Una búsqueda de "Cheatsheets Regex" debería recompensarlo con una gran cantidad de resúmenes útiles.
Enlace útil: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html –
el enlace ya no funciona. por favor, actualice –
gran información gracias – Simmant
Dado que es una expresión regular, y estoy asumiendo u también no querría caracteres no alfanuméricos como comas, puntos, etc., que podrían ser rodeados por espacios en blanco (por ejemplo,"Uno, dos" debe dar [un] [dos]), que debe ser:
myString.split(/[\s\W]+/)
El código de Java proporcionado aquí no se compila. – Stephan
para conseguir este trabajando en Javascript, que tenía que hacer lo siguiente:
myString.split(/\s+/g)
Esto está en Javascript. Yo tampoco estaba prestando atención :) – miracle2k
Vaya. Mi error. Tal vez esta respuesta aún ayudará a otros que tropiecen con este hilo mientras buscan una respuesta de Javascript. :-) –
Haha Estaba buscando una respuesta para JavaScript, accidentalmente me encontré con esta pregunta y luego noté su respuesta antes de irme. +1. – Kris
Apache Commons Lang tiene un método para dividir una cadena con espacios en blanco como delimitadores:
StringUtils.split("abc def")
Esto podría ser más fácil de usar que un patrón de expresiones regulares.
se puede dividir una cadena de salto de línea mediante la siguiente declaración:
String textStr[] = yourString.split("\\r?\\n");
se puede dividir una cadena por espacios en blanco con la siguiente declaración:
String textStr[] = yourString.split("\\s+");
También usted puede tener una UniCode de no separación espacio xA0 ...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
¡esto me ayuda! –
Esto funcionó para mí también :)! – aravind
String str = "Hello World";
String res[] = str.split("\\s+");
¿En qué se diferencia esto de la respuesta aceptada? – Stephan
Estudio de 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);
}
}
}
¿Puede por favor detallar su respuesta? – Stephan
- 1. ¿Cómo dividir una cadena con caracteres en blanco al principio?
- 2. ¿Cómo puedo dividir una cadena según los delimitadores en Qt?
- 3. dividir una cadena con múltiples delimitadores en Ruby
- 4. Dividir una cadena con delimitadores pero mantener los delimitadores en el resultado en C#
- 5. Python regex dividir una cadena por uno de dos delimitadores
- 6. Dividir una cadena en palabras por múltiples delimitadores
- 7. ¿Cómo dividir una cadena y saltear espacios en blanco?
- 8. Bash: archivo de texto Dividir en palabras con caracteres no alfanuméricos como delimitadores
- 9. Dividir una cadena con múltiples espacios en blanco con perl?
- 10. dividiendo una cadena con Word delimitadores
- 11. ¿Cómo puedo dividir una cadena en Java y conservar los delimitadores?
- 12. ¿Cómo puedo dividir una cadena en CSH?
- 13. ¿Cómo puedo dividir una cadena con un delimitador de cadena?
- 14. ¿Cómo puedo dividir una cadena en make?
- 15. ¿Dividir una cadena usando espacios en blanco en Javascript?
- 16. Cómo dividir una cadena por varios caracteres en MSBuild 4?
- 17. División de una cadena con múltiples delimitadores en Python
- 18. Java: ¿Cómo dividir una cadena por una cantidad de caracteres?
- 19. Dividir una cadena Java con '.'
- 20. tokenize una cadena manteniendo delimitadores en Python
- 21. ¿Cómo puedo dividir una cadena en trozos de dos caracteres cada uno en Perl?
- 22. Cómo dividir una cadena por x cantidad de caracteres
- 23. Usando boost :: tokenizer con delimitadores de cadena
- 24. dividir una cadena en caracteres individuales en SQL Server 2005
- 25. cómo dividir cadena en serie como enteros
- 26. ¿Cómo puedo dividir una cadena por espacios en blanco a menos que esté dentro de una sola cadena entre comillas?
- 27. Separar una cadena basada en carbón múltiples delimitadores
- 28. ¿Hay bytes delimitadores para caracteres UTF8?
- 29. javascript - cómo dividir una cadena cada X cantidad de caracteres?
- 30. dividir cadena en una serie de caracteres diferentes
Gracias por ese recordatorio. Solo estaba codificando desde la cadera :) –
Tenga en cuenta que debe 'trim()' first: 'trim(). Split (" \\ s ++ ")'; de lo contrario, p. Ej. dividir 'a b c' emitirá primero dos cadenas vacías. –
¿Por qué usaste cuatro barras invertidas cerca del final de tu respuesta? es decir. '" \\\\ s "'? –