@BasilBourque - No pude encontrar ningún botón de ejecución en ese enlace
nanosoft
1
@nanosoft La página en IdeOne.com se ejecuta automáticamente al cargar. Vea la salida debajo del código, en la sección stdout . Para alterar el código, haga clic en el forkenlace cerca de la esquina superior izquierda.
Lo que tienes debería funcionar. Sin embargo, si los espacios provistos están predeterminados a ... ¿algo más? Puede usar la expresión regular de espacios en blanco:
str ="Hello I'm your String";String[] splited = str.split("\\s+");
Esto hará que cualquier número de espacios consecutivos divida su cadena en tokens.
Como nota al margen, no estoy seguro de que "dividir" sea una palabra :) Creo que el estado de ser víctima de una división también es "división". Es una de esas cosas gramaticales complicadas :-) ¡No trato de ser exigente, solo pensé que lo transmitiría!
Soy suizo, ¿qué esperabas, mi inglés no es el mejor; P, de todos modos, funcionó!
safari
29
:-) Hola, no es grande. He usado algunos nombres de variables ridículos (¡en un código que probablemente no debería haber dejado vivir!) No estaba tratando de ser un nazi gramatical ni nada, solo pasaba un poco de trivia, eso es todo.
corsiKa
77
@Safari, acabas de recibir 2 excelentes consejos en el precio de 1. Es broma. Gran respuesta.
Nirmal Mangal
8
"Lo que tienes debería funcionar" Digo algo similar con bastante frecuencia cuando se rompe mi código.
Griffin
1
Me resulta útil ya que mi caso de uso era dividir la cadena y eliminar múltiples espacios. Una línea de código hace las dos cosas por mí.
Niharika Upadhyay
87
Si bien la respuesta aceptada es buena, tenga en cuenta que terminará con una cadena vacía inicial si su cadena de entrada comienza con un espacio en blanco. Por ejemplo, con:
String str =" Hello I'm your String";String[] splitStr = str.split("\\s+");
Creo que poner una expresión regular entre paréntesis str.split debería resolver el problema. El método Java String.split () se basa en expresiones regulares, por lo que lo que necesita es:
str ="Hello I'm your String";String[] splitStr = str.split("\\s+");
Existe la posibilidad de lanzar ArrayIndexOutofBounds Exception.
Ajay Takur
2
No, esto no arrojará "ArrayIndexOutofBounds" porque he declarado el tamaño de la matriz de acuerdo con el número de tokens encontrados en String. esto asegurará que el tamaño de las matrices no sea más que los tokens recibidos en una cadena.
import java.util.regex.Pattern;...privatestaticfinalPattern SPACE =Pattern.compile(" ");String[] arr = SPACE.split(str);// str is the string to be split
Eso replaceAll("^\\s+","")me salvó el día. Eso funcionó para mi caso. Gracias
Kostas Asargiotakis
2
Muy simple ejemplo a continuación:
Espero eso ayude.
String str ="Hello I'm your String";String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0];//Hello
var splited2=splited[1];//I'm
var splited3=splited[2];//your
var splited4=splited[3];//String
fork
enlace cerca de la esquina superior izquierda.Respuestas:
Lo que tienes debería funcionar. Sin embargo, si los espacios provistos están predeterminados a ... ¿algo más? Puede usar la expresión regular de espacios en blanco:
Esto hará que cualquier número de espacios consecutivos divida su cadena en tokens.
Como nota al margen, no estoy seguro de que "dividir" sea una palabra :) Creo que el estado de ser víctima de una división también es "división". Es una de esas cosas gramaticales complicadas :-) ¡No trato de ser exigente, solo pensé que lo transmitiría!
fuente
Si bien la respuesta aceptada es buena, tenga en cuenta que terminará con una cadena vacía inicial si su cadena de entrada comienza con un espacio en blanco. Por ejemplo, con:
El resultado será:
Por lo tanto, es posible que desee recortar su cadena antes de dividirla:
fuente
Creo que poner una expresión regular entre paréntesis str.split debería resolver el problema. El método Java String.split () se basa en expresiones regulares, por lo que lo que necesita es:
fuente
Se usa
Stringutils.split()
para dividir la cuerda por espacios en blanco. Por ejemplo,StringUtils.split("Hello World")
devuelve "Hola" y "Mundo";Para resolver el caso mencionado usamos un método dividido como este
Cuando imprimimos la matriz dividida, la salida será:
Hola
estoy
tu
Cuerda
Para ver una demostración de ejemplo completa, consulte aquí
fuente
Tratar
http://download.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html
fuente
si de alguna manera no quieres usar el método de división de cadenas, puedes usar la clase StringTokenizer en Java como ...
fuente
Prueba este
fuente
Una forma alternativa sería:
Lo vi aquí
fuente
Bien, entonces tenemos que dividirnos, ya que ya obtuviste la respuesta, la generalizaría.
Si desea dividir cualquier cadena por espacios, delimitador (caracteres especiales).
Primero, elimine el espacio inicial ya que crean la mayoría de los problemas.
Primero elimine el espacio inicial que puede ser espacio, tabulación, etc.
Ahora si quieres dividir por espacio o cualquier carácter especial.
Pero como w contiene [a-zA-Z_0-9], si desea dividir por subrayado (_) también use
fuente
replaceAll("^\\s+","")
me salvó el día. Eso funcionó para mi caso. GraciasMuy simple ejemplo a continuación:
Espero eso ayude.
fuente
puedes separar la cadena usando el siguiente código
fuente
Aquí hay un método para recortar una cadena que tiene un "," o espacio en blanco
fuente
Como ha pasado un tiempo desde que se publicaron estas respuestas, aquí hay otra forma más actual de hacer lo que se pide:
Ahora tiene una lista de cadenas (que posiblemente sea mejor que una matriz); si necesitas una matriz, puedes hacer
output.toArray(new String[0]);
fuente
No solo el espacio en blanco, sino que mi solución también resuelve los caracteres invisibles también.
fuente
Cadena simple para escupir por espacio
fuente