elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Eliminar espacios a la derecha
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar espacios a la derecha  (Leído 11,580 veces)
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Eliminar espacios a la derecha
« en: 5 Julio 2011, 02:19 am »

Supongan que tengo el siguiente string    "hola             ", y quiero que sea simplemente "hola", hay alguna funcion que elimine los espacios o me tengo que programar alguna?? -.- -.- -.- -.- -.- -.-

GRACIAS!


En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Eliminar espacios a la derecha
« Respuesta #1 en: 5 Julio 2011, 02:55 am »

No se si en Java existe el string.Trim() Y si existe fijate que habra 2 mas para elegir para que lado, por si alguna vez necesitas solo de un lado, ya que ahora da igual q lado pienso.
O sino podrias usar la funcion de remplazar para remplazar los " " por ""


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Eliminar espacios a la derecha
« Respuesta #2 en: 5 Julio 2011, 02:59 am »

Puedes usar la función trim() de String. Esta función te elimina los blancos que hayan antes de comenzar el texto y al final, pero los que hay por enmedio NO los elimina.

Otra forma que podrías tener de eliminarlos sería usando la función split(" +"), la cual te devolvería un array con todas las palabras que hay separadas por espacios. Por ejemplo, si tenemos: "hola,  me      llamo   Perico de Los       palotes" te devolvería un array que sería: hola,;me;llamo;Perico;de;Los;palotes; (he separado cada elemento por ; para que quede más claro). El motivo de poner como parámetro a la función " +" es porque es una expresión regular que significa uno o más espacios.

Espero que te sirva.

Saludos.
En línea

klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: Eliminar espacios a la derecha
« Respuesta #3 en: 5 Julio 2011, 23:33 pm »

Hace un tiempo me hice esta clase, espero te sirva la el método inTrim(), saludos  ;)

Código:

import javax.swing.*;
import java.io.*;
import javax.swing.JFileChooser.*;
import javax.swing.filechooser.FileFilter;

public class ZString {

    public ZString(){

    }

    String getFile(String[] exts, String dir, String description){

        /**
         *
         * Obtiene la ruta de un archivo, dada una lista de extensiones
         * de la forma:
         *
         *   ".ext"
         *
         * El segundo argumento asigna una ruta
         * como directorio inicial, donde se mostrara
         * el cuadro de dialogo abrir como
         *
         * El tercer argumento asigna un valor de referencia
         * para el usuario que vera el cuadro de dialogo,
         * por ejemplo:
         *
         * "Archivos de texto plano"
         *
         *
         */

        txtFilter txf = new txtFilter();

        txf.extensions = exts;

        txf.desc = description;

        JFileChooser jfc = new JFileChooser();

        jfc.setFileFilter(txf);

        jfc.setCurrentDirectory(new File(dir));

        int res=jfc.showOpenDialog(null);

        if(res==jfc.APPROVE_OPTION){

            return jfc.getSelectedFile().toString();

        }else{

            return "No se seleccionó ningun archivo";

        }



    }

    String inTrim(String s){

        /**
         * Elimina el exceso de espacios dada una cadena de caracteres
         *
         * Retorna: Cadena la cadena de caracteres recibida
         * sin espacios al principio ni al final y
         * cada palabra separada solo de un espacio
         *
         * Si se recibe un salto de linea el utltimo caracter de
         * una linea sera separado de la siguiente linea
         * solo por un salto de linea y no un espacio mas
         * un salto de linea
         *
         */

        String out="";

        String arr[] = s.split(" ");

        boolean init = true;

        for(String val:arr){

            if(init&&!val.equals("")){

                out+=val;
                init=false;

            }else if (!val.equals("")){

                out+=" "+ val;

            }



        }

        return out.replace("\n ", "\n");
    }

    void show(String s){

        JOptionPane.showMessageDialog(null, s);

    }

    int txtCount_words(String file){

        /**
         * Dada la ruta de un archivo de texto plano
         * devuelve el numero de palabras
         * encontradas en ese acrchivo.
         *
         *
         */

        String a="", in="";

        try{

        BufferedReader bf = new BufferedReader(new FileReader(new File(file)));



        while(a!=null){

            a=bf.readLine();

            if (a!=null){

                in+=a + " ";

            }

        }


        }catch(FileNotFoundException FEX){

        }catch(IOException IOEX){

        }

        String tin = (String) (new ZString()).inTrim(in);



        String[] ing = tin.split(" ");

        if(new ZString().txtCount_chars(file)==0){

            return 0;

        }else{

        return ing.length;

        }

    }

    void writer(String[] args, String file, boolean rewrite, boolean delete_on_exit){

        /**
         *
         * El primer argumento indica
         * las palabras que se agregaran al archivo de
         * texto plano.
         *
         * El segundo argumento indica la ruta de
         * dicho archivo.
         *
         * Si el tercer argumento
         * es true el archivo
         * se sobreescribe
         *
         * Si el cuarto argumento es true
         * el archivo se borra al cerrar
         * el programa
         *
         *
         */

    String[] in=this.reader(file).split("\n");

    Writer w=new Writer(file, delete_on_exit);

    if(rewrite){

        w.touch();

    }else{

    for(String val:in){

        w.write(val);

    }

    }

    for(String val:args){

        w.write(val);

    }

    w.close();

    }


    int txtCount_chars(String f){

        /**
         * Dada la ruta de un archivo de texto plano
         * devuelve el numero de caracteres
         * encontrados en ese acrchivo.
         *
         * No se cuentan espacios
         * ni saltos de linea
         *
         */

        String a="", in="";

        try{

        BufferedReader bf = new BufferedReader(new FileReader(new File(f)));

        while(a!=null){

            a=bf.readLine();

            if (a!=null){

                in += a;

            }

        }

        }catch(FileNotFoundException FEX){

        }catch(IOException IOEX){

        }

        return (new ZString()).noSpace(in).length();

    }

    public String reader(String file){

        /**
         * Dada la ruta de un archivo de texto plano,
         * devuelve el contenido de dicho archivo
         *
         *
         */

        String out="";

        String a="";

        try{

        BufferedReader r=new BufferedReader(new FileReader(new File(file)));

        while(a!=null){

            a=r.readLine();

            if(a!=null){

            out+=a + "\n";

            }

        }

        }catch(FileNotFoundException fnfEX){

            JOptionPane.showMessageDialog(null, "El archivo especificado no existe");

        }catch(IOException ex){



        }

        return out;

    }

    String noSpace(String s){

        /**
         *
         * Dado un String retorna el mismo String
         * Sin espacios
         *
         */

        String out="";

        String[] in = s.split(" ");

        for(String val:in){

            out+=val;

        }

        return out;

    }

    String getTxtFile(){

        /**
         *
         * Abre un cuadro de dialogo abrir...
         * Devuelve la ruta del archivo especificado en esa
         * ruta, si se presiona cancelar, no se tomaran acciones.
         *
         * (Queda a criterio)
         *
         */

        String file="";

        JFileChooser jfc = new JFileChooser();

        jfc.setCurrentDirectory(new File(System.getProperty("user.home") + "\\Desktop"));
        jfc.setApproveButtonText("Analizar");
        jfc.setMultiSelectionEnabled(false);

        txtFilter f=new txtFilter();

        jfc.setFileFilter(f);

        int returnval = jfc.showDialog(jfc, "Analizar...");

        if (returnval==jfc.APPROVE_OPTION){

            file=jfc.getSelectedFile().toString();

        }



        return file;

    }

}

class txtFilter extends FileFilter{

    String[] extensions = {".txt", ".bat", ".vbs", ".js"};

    String desc = "Plain txt files |*.txt |*.bat | *.vbs |*.js";

    txtFilter(){

    }


    public boolean accept(File f){

        boolean a=false;

        if(f.isDirectory()){

            return true;

        }

        for (String val:extensions){

            if (f.toString().endsWith(val)){

                a=true;
                break;

            }else{

                a=false;

            }

        }

        return a;

    }

    public String getDescription(){

        return desc;

    }



}


class Writer {

    java.io.BufferedWriter bw;

    String file="";

    Writer(String foo, boolean delete){

        this.file=foo;

        try{

            File f = new File(this.file);

            if(delete){

            f.deleteOnExit();

            }

            bw=new BufferedWriter(new FileWriter(f));

        }catch(IOException ex){

        }
    }

    public void write(String line){

        try{

        bw.append(line);

        bw.newLine();

        }catch (IOException ex) {

            ex.printStackTrace();

        }

        }



    public void touch(){

        /**
         ** Vacia el archivo con el cual se construyo este objeto
         ** o lo crea si no existe
         **/

        File f = new File(this.file);



        try{

            if(f.exists()){
            f.delete();
            f.createNewFile();
            }else{
            f.createNewFile();
            }

        }catch(IOException c){

        }

    }

    public void touch(String foo){

        /***
         * Vacia el archivo dado
         *
         * Si el archivo no existe se crea
         *
         * Si el String recibido no es una ruta valida
         * se lanzara IOException, se captura aqui mismo,
         * las acciones a tomar en ese caso quedan a criterio.
         * En este metodo el catch esta vacio
         *
         * NOTA: Las rutas de archivos se separan con "\",
         * "\" es un caracter especial para java, para no tener problemas con esto,
         * se usa "\\" para denotar dicho caracter
         *
         *
         ***/



        try{

            File fi= new File(foo);

            if(fi.exists()){

                fi.delete();
                fi.createNewFile();

            }else{

                fi.createNewFile();

            }

        }catch(IOException c){

        }

    }

public void close(){

    try{

        this.bw.close();

    }catch(IOException ex){

    }

}

}

En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Eliminar espacios a la derecha
« Respuesta #4 en: 6 Julio 2011, 04:53 am »

El método que propones no está mal, pero es bastante ineficiente trabajar con un string e ir concatenando elementos. Si lo haces con un StringBuffer funcionaría mucho mejor. Además, si haces un split() y le pasas como parámetro " +" no tienes que realizar comprobaciones, ya que te devuelve un array que solo contiene palabras (fijate que el parámetro a dicha función es una expresión regular, y con la que he escrito, reconoce uno o más espacios).

Saludos.
En línea

klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: Eliminar espacios a la derecha
« Respuesta #5 en: 7 Julio 2011, 23:44 pm »

de hecho deberia arreglar eso por que si a split() le pasas "\\" te tira unexpectedInternalError xD

Saludos  ;)
En línea

Starcarr

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Eliminar espacios a la derecha
« Respuesta #6 en: 25 Julio 2011, 22:02 pm »

Ustedes se complican mucho con cosas que ya están hechas:

Citar
public static void main(String[] args) {
        String s= "    Hola mundo mundial!             ";
        System.out.println(s.trim());
        System.out.println(s.replace(" ", ""));
    }

Resultado:
Citar
Hola mundo mundial!
Holamundomundial!

Saludos.
En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Eliminar espacios a la derecha
« Respuesta #7 en: 25 Julio 2011, 23:01 pm »

Ustedes se complican mucho con cosas que ya están hechas:

Resultado:
Saludos.

Sí, pero si el objetivo es dejar las palabras separadas entre sí por un único espacio, y que no empiece ni termine por espacios, lo que propones no valdría.

Una forma que se me acaba de ocurrir podría ser esta:

Código
  1. String texto = new String("    Hola    esto   es una prueba      de eliminar      espacios                    ");
  2. System.out.println(texto);
  3. texto = texto.replaceAll(" +", " ");
  4. texto = texto.trim();
  5. System.out.println(texto);
  6.  

Y nos devolvería la siguiente salida:

Código:
    Hola    esto   es una prueba      de eliminar      espacios                    
Hola esto es una prueba de eliminar espacios

Donde, se han eliminado los espacios por la izquierda y la derecha, y además solo existe un espacio entre cada palabra.

Saludos.
En línea

bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: Eliminar espacios a la derecha
« Respuesta #8 en: 26 Julio 2011, 00:47 am »

Utiliza un tokenizer (solo para frases cortas) o un lector (para textos largos)
en el tokenizer tu le mandas un delimitador por ejemplo " " o "       " que es lo mismo en la frase siguiente : hola mundo           como                 estas
el resultado sera hola mundo como estas y asunto solucionado.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
teclas derecha izquirda, arriba y abajo
Programación C/C++
mrkcc 3 4,030 Último mensaje 10 Junio 2010, 08:40 am
por Saberuneko
Tabulación a la derecha
Programación C/C++
Programador91 4 3,058 Último mensaje 12 Abril 2012, 17:23 pm
por Programador91
pagina se me recorre a la derecha
Desarrollo Web
basickdagger 2 2,103 Último mensaje 22 Marzo 2013, 01:37 am
por basickdagger
Eliminar espacios lineas archivo de texto
Scripting
Shuffle66 7 8,383 Último mensaje 18 Julio 2013, 11:48 am
por Shuffle66
Eliminar Espacios entre componentes (matriz de jtextfield de 10*10)
Java
d!lan 0 2,060 Último mensaje 2 Marzo 2014, 23:41 pm
por d!lan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines