problema con split

Iniciado por alex_alex, 23 Mayo 2014, 15:21 PM

0 Miembros y 3 Visitantes están viendo este tema.

alex_alex

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

Shell Root

#1
Pues como es el archivo original? o verifica con un condicional al mostrar el contenido, es decir:
Código (java,3) [Seleccionar]
for(String par: paraula)
{
   if(par != Empty)
   {
      System.out.println(par);
   }
}

Lo siento pero mi Java es malisimo, pero es un idea jajajaj
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

alex_alex

Cita de: Shell Root en 23 Mayo 2014, 15:22 PM
Pues como es el archivo original?

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

alex_alex

Cita de: 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 (java,3) [Seleccionar]
for(String par: paraula)
{
   if(par != Empty)
   {
      System.out.println(par);
   }
}

Lo siento pero mi Java es malisimo, pero es un idea jajajaj

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

Chuidiang

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.

alex_alex

Cita de: 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.

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!

Migugami

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.

alex_alex

Sigue quedandome la primera linea en blanco y "ocupandome" un sitio en el string, es decir, string[0] tengo una linea en blanco..

Chuidiang

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.

Shell Root

#9
Código (java) [Seleccionar]
public class HelloWorld{

     public static void main(String []args){
        String sFile[] = {
            "[GOMES SERGIO, ALEX",
            "  Telephones:",
            "    1234",
            "    123456",
            "  Emails:",
            "    c@gmail.com",
            "",
            ", ESCOBAR, MANOLO",
            "  Telephones:",
            "  Emails:",
            "    manolito@gmail.com",
            "]"
        };

        for(int i=0; i<=11; i++){
            sFile[i] = sFile[i].replaceAll("[,.;:'\\[\\]]", "");
            sFile[i] = sFile[i].trim();
            if(sFile[i] != "")
                System.out.println(sFile[i]);
        }
       
     }
}


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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.