Foro de elhacker.net

Programación => Java => Mensaje iniciado por: alex_alex en 23 Mayo 2014, 15:21 pm



Título: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 15:21 pm
Hola, tengo un problema y nose si es el split que no lo hace bien, tengo este codigo.

while (linia!=null)  {
               
             String[] paraula = linia.split("[\\s,.;:'\\[\\]]");

             for(String par: paraula){
                System.out.println(par);
             }
           
             linia = bur.readLine();
}

Me lee un archivo y por pantalla me lo muestra así, porque no me lo muestra todo junto sin los saltos de linea? como los puedo quitar? gracias de antemano


GOMES
SERGIO

ALEX


Telephones




1234




123456


Emails




c@gmail
com


ESCOBAR

MANOLO


Telephones


Emails




manolito@gmail
com


Título: Re: problema con split
Publicado por: Shell Root en 23 Mayo 2014, 15:22 pm
Pues como es el archivo original? o verifica con un condicional al mostrar el contenido, es decir:
Código
  1. for(String par: paraula)
  2. {
  3.   if(par != Empty)
  4.   {
  5.      System.out.println(par);
  6.   }
  7. }
Lo siento pero mi Java es malisimo, pero es un idea jajajaj


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 15:25 pm
Pues como es el archivo original?

[GOMES SERGIO, ALEX
  Telephones:
    1234
    123456
  Emails:
    c@gmail.com
   
, ESCOBAR, MANOLO
  Telephones:
  Emails:
    manolito@gmail.com
]


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 15:48 pm
Pues como es el archivo original? o verifica con un condicional al mostrar el contenido, es decir:
Código
  1. for(String par: paraula)
  2. {
  3.   if(par != Empty)
  4.   {
  5.      System.out.println(par);
  6.   }
  7. }
Lo siento pero mi Java es malisimo, pero es un idea jajajaj

no me sirve, ya que luego tengo que tratar con el string


Título: Re: problema con split
Publicado por: Chuidiang en 23 Mayo 2014, 15:49 pm
Toma este trozo de texto

SERGIO, ALEX

al hacer split con el espacio \\s y con la coma, el split te dará tres elementos : "SERGIO", "" y "ALEX". El "" te lo da porque es lo que está entre la , y el espacio, ya que ambos sirven de separador.

el elemento del medio lo sacas con un println(), así que sale aparentemente una linea vacía. Antes de sacarlas, elimina strings vacíos ""

Se bueno.


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 15:52 pm
Toma este trozo de texto

SERGIO, ALEX

al hacer split con el espacio \\s y con la coma, el split te dará tres elementos : "SERGIO", "" y "ALEX". El "" te lo da porque es lo que está entre la , y el espacio, ya que ambos sirven de separador.

el elemento del medio lo sacas con un println(), así que sale aparentemente una linea vacía. Antes de sacarlas, elimina strings vacíos ""

Se bueno.

no entiendo a que te refieres con sacar el elemento con un println(), por otro lado para eliminar string vacios "" es con el trim? gracias!


Título: Re: problema con split
Publicado por: Migugami en 23 Mayo 2014, 16:08 pm
Estás en lo correcto. El método trim() elimina los espacios de una cadena de caracteres. Por lo que es siempre conveniente primero aplicar el método trim() a la cadena y luego hacer el Split.


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 16:15 pm
Sigue quedandome la primera linea en blanco y "ocupandome" un sitio en el string, es decir, string[0] tengo una linea en blanco..


Título: Re: problema con split
Publicado por: Chuidiang en 23 Mayo 2014, 17:15 pm
un trim() elimina espacios delante y detrás de una cadena, NO elimina un "" ya que no tiene nada, ni suiquiera espacios.

Sacar con un println es lo que estás haciendo con      System.out.println(par); en tu código. Si haces System.out.println(par) siendo par un "", se traduce en que escribes una línea en blanco.

Se bueno.


Título: Re: problema con split
Publicado por: Shell Root en 23 Mayo 2014, 17:16 pm
Código
  1. public class HelloWorld{
  2.  
  3.     public static void main(String []args){
  4.        String sFile[] = {
  5.            "[GOMES SERGIO, ALEX",
  6.            "  Telephones:",
  7.            "    1234",
  8.            "    123456",
  9.            "  Emails:",
  10.            "    c@gmail.com",
  11.            "",
  12.            ", ESCOBAR, MANOLO",
  13.            "  Telephones:",
  14.            "  Emails:",
  15.            "    manolito@gmail.com",
  16.            "]"
  17.        };
  18.  
  19.        for(int i=0; i<=11; i++){
  20.            sFile[i] = sFile[i].replaceAll("[,.;:'\\[\\]]", "");
  21.            sFile[i] = sFile[i].trim();
  22.            if(sFile[i] != "")
  23.                System.out.println(sFile[i]);
  24.        }
  25.  
  26.     }
  27. }

Código:
Compiling the source code....
$javac HelloWorld.java 2>&1


Executing the program....
$java -Xmx128M -Xms16M HelloWorld

GOMES SERGIO ALEX
Telephones
1234
123456
Emails
c@gmailcom
ESCOBAR MANOLO
Telephones
Emails
manolito@gmailcom


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 21:58 pm
un trim() elimina espacios delante y detrás de una cadena, NO elimina un "" ya que no tiene nada, ni suiquiera espacios.

Sacar con un println es lo que estás haciendo con      System.out.println(par); en tu código. Si haces System.out.println(par) siendo par un "", se traduce en que escribes una línea en blanco.

Se bueno.
entonces como puedo solucionar este problema o porque me lo hace el que escriba una línea en blanco? gracias


Título: Re: problema con split
Publicado por: Chuidiang en 23 Mayo 2014, 22:34 pm
Pues haciendo lo que te dijo Shell Root como primera contestación.

Se bueno.


Título: Re: problema con split
Publicado por: alex_alex en 23 Mayo 2014, 22:35 pm
Pues haciendo lo que te dijo Shell Root como primera contestación.

Se bueno.

creo que es por el [ que me hace en la primera linea y lo quitare mal...