Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   busqueda en archivos (http://www.forosdelweb.com/f45/busqueda-archivos-244190/)

dark_night 03/11/2004 18:12

busqueda en archivos
 
holas

el problema ke tengo es el siguiente.....

tengo un archivo de texto con el sgte formato

palabra1 palabra1b
palabra2 palabra2b
...
...

etc..

el problema es ke el programa tiene ke tomar cada palabra de un textarea y buscarla en el archivo de texto y escribir en otro textarea su correspondiente b(osea lee palabra1 de el area1 busca y escribe palabra1b en el area2)..

la cosa es ke no tengo la menor idea de como hacer eso :(

agradesco cualkiera yuda y sugerencias

gracias

pacoalonso79 04/11/2004 15:50

HOla:
aqui un pequeño algoritmo...
1. recojo los datos de area1
2. separo toda la cadena obtenida en area1 por los espacios en blanco y el resultado lo guardo en un array arrArea1
3. abro el archivo de texto, lo leo y hago las mismas operaciones de antes
4. hago un algoritmo de burbuja y listo...

una implementacion en java...
Código:

import java.io.*;
import javax.swing.*;
import java.awt.event.*;

public class busqueda extends JFrame implements ActionListener{

    JTextArea area1, area2;
    String[] arrArea1;

    public busquda (){
        // creas la gui y todo lo demas...
    }

    // el evento del boton que procesa... es deir el proceso en si
    public void actionPerformed (ActionEvent ae){
        // consiguiendo lo escrito en area1
        String str = area1.getText().trim();

        // pasando al array arrArea1
        arrArea1 = str.split(" ");

        // abrimos el archivo y lo leemos
        try {
            File arch = new File("archivo.txt");
            FileReader fr = new FileReader(fr);

            // leyendo y pasando a un buffer de cadena
            StringBuffer sb = new StringBuffer();
            int c;

            // leyendo y guardando en buffer...
            while ((c = fr.read()) != -1){
                sb.append((char) c);
            }

            // convertimos sb a cadena y la "trozamos" con el split
            String strArch = sb.toSttring();
            String[] arrArch = strArch.split(" ");

            // ahora que ya tenemos dos arrays que los
            // podemos comparar, hacemos la búsquda...
            for (int i = 0; i < arrArea1.length; i++){
                for (int j = 0; j < arrArch.length; j++){

                    // buscamos si la palabra esta o no...
                    if (arrArea1[i].trim().equalsIgnoreCase(arrArch[j].trim())){
                        // colocamos el elemento de la posicion j + 1 en el area2
                        String s = "A la palabra " + arrArch[j].trim()
                                  + " le corresponde la palabra "
                                  + arrArch[j + 1].trim();

                        area2.append(s + "\n");
                    }
                }
            }
           
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

Espero que esto te sirva... para mayores detalles busca la documentacion de las apis de java par que sepas mas de cada clase que estamos usando...

Saludos y éxitos

dark_night 04/11/2004 17:55

holas..primero ke todo gracias.. me sirvio arto

pero tengo un par de preguntas

primero...me da error con el sb.toSttring(); nose porke...
y en public busqueda va toda la interfaz grafica cierto??


esop..gracias

dark_night 08/11/2004 15:19

holas...el codigo ke me diste...no me funciona bien :(...alomejor me exprese mal antes :p

primero solo toma la primera palabra del archivo...nada mas osea el archivo es asi

hola hello
puerta door
ventana window

si en el original pongo hola, en el final pone hello puerta porke????
si pongo puerta o ventana no aparece nada....

como soluciono eso??
grax

pacoalonso79 09/11/2004 07:25

Hola, el código que te he dado no esta probado pues lo hice ahi mismo que lei tu mensaje... incluso lo que te voy a poner ahora no lo he probado pero espero te dé mas luces para tu objetivo final....ahi te va...
Código:

            // convertimos sb a cadena y la "trozamos" con el split
            String strArch = sb.toSttring();
            String[] arrArch = strArch.split("\n");

            // analizamos par por par...
            for (int i = 0; i < arrArea1.length; i++){
               
                String[] par = arrArch[i].ttrim().split(" ");

                String s = "A la palabra " + par[0].trim()
                          + " le corresponde la palabra "
                          + par[1].trim();

                area2.append(s + "\n");
               
                par = null; s = null;
        }

Creo que ahora este está mejor...
Saludos y éxitos

dark_night 09/11/2004 16:25

hola denuevo....

ahora el problema es ke la palabra ke se ponga pone hello(ocupo el archivo como lo dije antes)y si se pone mas de 1 palabra pone hello acompañado de las otras palabras del archivo....:S

grax


La zona horaria es GMT -6. Ahora son las 19:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.