Foros del Web » Programación para mayores de 30 ;) » Java »

busqueda en archivos

Estas en el tema de busqueda en archivos en el foro de Java en Foros del Web. holas el problema ke tengo es el siguiente..... tengo un archivo de texto con el sgte formato palabra1 palabra1b palabra2 palabra2b ... ... etc.. el ...
  #1 (permalink)  
Antiguo 03/11/2004, 18:12
 
Fecha de Ingreso: octubre-2004
Ubicación: chile
Mensajes: 116
Antigüedad: 19 años, 6 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 04/11/2004, 15:50
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 20 años, 9 meses
Puntos: 0
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
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche
  #3 (permalink)  
Antiguo 04/11/2004, 17:55
 
Fecha de Ingreso: octubre-2004
Ubicación: chile
Mensajes: 116
Antigüedad: 19 años, 6 meses
Puntos: 0
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
  #4 (permalink)  
Antiguo 08/11/2004, 15:19
 
Fecha de Ingreso: octubre-2004
Ubicación: chile
Mensajes: 116
Antigüedad: 19 años, 6 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 09/11/2004, 07:25
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 20 años, 9 meses
Puntos: 0
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
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche
  #6 (permalink)  
Antiguo 09/11/2004, 16:25
 
Fecha de Ingreso: octubre-2004
Ubicación: chile
Mensajes: 116
Antigüedad: 19 años, 6 meses
Puntos: 0
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:27.