CLR: .Net / Mono / Boo / Otros CLR > C#

 hacer una busqueda de una palabra en un archivo txt externo

(1/2) > >>

computadora:
hola, lo que quiero saber es como en un windows application de c# puedo hacer que el usuario pueda seleccionar un archivo e introducir una palabra para buscarlo en el
esto es lo que tengo, pero no hace nada, solo revisa el ultimo renglon del archivo txt seleccionado ¿que le puedo modificar?
*tengo 2 botones, para borrar y buscar el doc y un listbox para poner los resultados
*****
int r = 0;
            bool esta = false;
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.ShowDialog();
            try
            {
                FileStream son = new FileStream(OpenFile.FileName, FileMode.Open, FileAccess.Read);
                StreamReader so = new StreamReader(son);
                for (int i = 0; i <= 16; i++)  //NO. DE RENGLONES
                {

                    if (textBox1.Text.ToString() == "<CP>")    
                    {
                        pag++; ;
                    }
                    if (textBox1.Text.ToString() == "<CC>")
                    {
                        cap++; ;
                    }

                    if (textBox1.Text.ToString() == (so.ReadLine()).ToString())
                    {
                        r = i + 1;
                        esta = true;
                    }
                }
                so.Close();
            }
            catch (ArgumentException)
            {
            }
       
            if (esta == true)
            {
                listBox1.Items.Add("Se encuentra en la pagina " + pag + ", capitulo " + cap);
            }
            else {
                listBox1.Items.Add("La palabra no fue encontrada");
            }
           
         
         
        private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }

            }

       
    }


*****

gracias ! :)

eltruhanero:
te pego un ejemplo


--- Código: C# --- FileStream fs = new FileStream(@"C:archivo.TXT",FileMode.Open);byte[] bytes = new byte[fs.Length];fs.Read(bytes, 0, bytes.Length);string s = Encoding.ASCII.GetString(bytes);bool b=s.Contains("palabra_a_buscar");  

computadora:
gracias eltruhanero, tu codigo si me sirvio y le entendi  :lol:
unicamente a este no:
string s = Encoding.ASCII.GetString(bytes);
bool b=s.Contains("palabra_a_buscar");

otra cosa, y como podria poner un contador que sume uno cada vez que encuentre la palabra "agua" antes de la palabra buscada??
esto es lo que tengo
***********
  //buscar mientras que no encunetre la palabra
            do {
                if (s == "agua")
                {
                    contador++;
                }
            } while (acabar==false);
//este seria true cuando encuentre la palabra
           

 if (s.Contains(palabraBuscada) == true)
            {
                acabar = true;

                    }+

*******
gracias de antemano

eltruhanero:
No precisas recorrer todo el archivo para saber si existes un string en el.

Te comento el codigo:


--- Código: C# --- // Te "linkeas" con el archivo.FileStream fs = new FileStream(@"C:archivo.TXT",FileMode.Open); // Copias todo el contenido del archivo a memoriabyte[] bytes = new byte[fs.Length];fs.Read(bytes, 0, bytes.Length); // Transformas los bytes del archivo a un string gigantescostring s = Encoding.ASCII.GetString(bytes); // Al  string gigante levantado, le preguntas si tiene tal palabrabool b=s.Contains("palabra_a_buscar");  
Si queres saber cuantas palabras tiene podes hacer:


--- Código: C# --- FileStream fs = new FileStream(@"C:archivo.TXT",FileMode.Open);byte[] bytes = new byte[fs.Length];fs.Read(bytes, 0, bytes.Length);string s = Encoding.ASCII.GetString(bytes);const string buscar = "palabra_a_buscar";bool b=s.Contains(buscar); // Inicializoint cant = 0;// mientras siga teniendo esa palabrawhile (b){    cant++;    s = s.Remove(buscar,1);    b=s.Contains(buscar);} // si b es true, la cantidad de veces q esta esa palabra es cant.// si b es false, cant es 0.   
Me entendes? No lo compile ni nada x lo q puede tener errores...pero conceptualmente esta bien...
La desventaja de este metodo es q si el archivo pesa 50 mb levantas 50mb a memoria...

Saludos, Daniel

computadora:
muchisimas gracias por tus respuestas, de verdad :)

creo que me explique mal, dejame te pongo un ejemplo:
supongamos que el texto  a leer es:                agua perro casa auto agua domingo sabado algo palabra agua
y lo que quiero es que la palabra a buscar sea "sabado" y me cuente cuantas veces la palabra "agua" esta antes de ella, que serian 2

entonces seria modificar esto del ultimo codigo, pero al probarlo pues no me sale :(
  while (b)
   {
       cant++;
       s = s.Remove("agua",1);
       b=s.Contains(buscar);
   }


gracias de nuevo

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa