Java - Mal comportamiento de función split

 
Vista:

Mal comportamiento de función split

Publicado por Vidal (1 intervención) el 26/08/2009 18:58:55
Estoy tratando de usar el método split de la clase String pero no funciona como yo espero que lo haga (también he probado con la clase StringTokenizer y actúa de la misma forma), pongo a continuación un ejemplo:

String cadena = "Esto;es;una;prueba";
String[] linea1 = cadena.split(";");

String cadena = "Esto;es;una;prueba;;;;";
String[] linea2 = cadena.split(";");

El array de String linea1 tiene exactamente la misma cantidad de elementos que linea2; se ve claramente que no rellena el array de string con elementos vacios (cadenas de longitud 0) cuando se encuentra el separador repetido varias veces.

Que puedo hacer para que se tengan en cuenta también los elementos vacíos??
No me queda más remedio que hacer mi propia función??

Un saludo y gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Mal comportamiento de función split

Publicado por James (207 intervenciones) el 27/08/2009 05:20:19
Pues en realidad no funciona como deseas porque en realidad no tienes cadenas vacias, si separas la cadena veras que en realidad no existen, asi que o les pones algo que indique vacio, aunque sea un espacio en balnco, o como dices escribes tu funcion, Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Mal comportamiento de función split

Publicado por Gerardo Aquino (62 intervenciones) el 27/08/2009 06:37:46
Recuerda que en Split lo que evalúa es una expresión regular aunque como lo escribiste es valido, solo recuerda que es importante para evaluar expresiones mas complejas. Lo que tienes que indicarle a es que no te interesa el limite de tu array que retorna por lo que debes utilizar

String [] arreglo = cadena.split ("[;]", -1);

de esta forma estas usando adecuadamente la expresion regular que debes indicar en split y estas diciendo a java que te de todas las posiciones del arreglo incluyendo el ultimo despues del ultimo token. Java no guarda elementos vacios resultantes de un split a menos que le indiques un numero negativo en el limite de tu array a retornar


Conclusión: el metodo de split no tiene mal comportamiento, simplemente no has indicado adecuadamente lo que necesitas


Espero te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Mal comportamiento de función split

Publicado por jose taveras (2 intervenciones) el 20/03/2012 21:10:31
Gracias.

tu comentario me ayudo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar