none
como puedo reemplazar palabras completas en archivo de texto plano RRS feed

  • Pregunta

  • buenas tardes espero puedan apoyarme, me encuentro desarrollando una pequeña aplicación en c#,  el problema que tengo es como indicarle al programa que reemplace en un archivo de texto plano solo las palabras completas y no afecte a las que que contengan la palabra NULL, asi va mi codigo 

                    Console.WriteLine("\nIntroduzca el nombre del archivo txt para editar:");
                    string nombreArchivo = Console.ReadLine();
    
                    string path = @"D:\\" + nombreArchivo + ".txt";
                    if (File.Exists(path))
                    {
                        string str = File.ReadAllText(path);
                        str = str.Replace("NULL", "");
                        File.WriteAllText(path, str);
    
                        StreamReader file = new StreamReader(@"D:\" + nombreArchivo + ".txt");
                        int counter = 0;
                        string line;
    
                        Console.WriteLine("\n");
                        while ((line = file.ReadLine()) != null)
                        {
                            Console.WriteLine(line);
                            counter++;
                        }
    
                        Console.WriteLine("\nEl archivo se ha modificado correctamente.");
                        Console.Read();
                    }
                    else
                    {
                        Console.WriteLine("No existe el archivo de texto plano");
                        Console.Read();
                    }

    martes, 23 de abril de 2019 17:43

Respuestas

  • A ver, que no se ha entendido demasiado bien. ¿Quieres cambiar por un espacio vacío la palabra NULL siempre que sea una palabra completa, y no quitarlo por ejemplo de dentro de "ANULLABLE"?

    Se requeriría saber cómo defines "palabra completa". Si entendemos por palabra todo lo que esté separado por un espacio en blanco, puedes hacer un Split para cortar por los espacios y luego volver a hacer un join para juntar los pedazos sin las palabras null:

    string str = File.ReadAllText(path);
    str = string.Join(" ", str.Split(' ').Where(w=>w!="NULL"));
    File.WriteAllText(path, str);

    Nótese que hemos usado un Where de linq para quitar los "NULL". Obviamente requiere un using de System.Linq al principio de tu código.

    Si también necesitas considerar otros separadores como por ejemplo la coma, puedes repetir lo anterior usando "," y ',' en lugar de " " y ' ', y lo mismo con cualquier otro carácter que consideres que marca una separación entre palabras. Acuérdate de los saltos de línea si tus NULL pueden ir al principio o al final de la línea.


    martes, 23 de abril de 2019 18:57
    Moderador