Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68

    [C#] Cercare stringa in un file e sostituirla

    Salve a tutti, volevo sapere se esiste qualche particolare funzione che cerca una stringa precisa all'interno di un file e la sostituisce con la stringa che voglio io. Non ho trovato niente del genere girando per Internet. Inoltre pensavo di ovviare al problema leggendo sequenzialmente riga per riga il file e sostituire la riga interessata con la stringa che mi interessa. Ho provato a usare la funzione File.OpenWrite ma non so proprio come scorrere il file. Qualche idea?

  2. #2
    Eccoti un esempio banalissimo, anche se a seconda dei casi deve essere migliorato.

    codice:
    //mettere System.IO
    using System.IO;
    
    public void SostituisciInFile(string Percorso, string Vecchia, string Nuova)
    {
        StreamReader sr = new StreamReader(Percorso);
        StreamWriter sw = new StreamWriter(Percorso + ".new");
        while (!sr.EndOfStream)
            sw.WriteLine(sr.ReadLine().Replace(Vecchia, Nuova));
        sr.Close();
        sw.Close();
        File.Delete(Percorso);
        File.Move(Percorso + ".new", Percorso);
    }
    Legge una riga alla volta dal file e la riscrive in un altro sostituendo il cercato (tiene conto di maiuscole e minuscole).
    Alla fine chiude, cancella il file e lo soppianta col nuovo modificato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68
    Grazie innanzitutto per la risposta.

    Non mi è chiaro però il tuo codice, o meglio la parte del while. In pratica con il while scorriamo il file fino alla fine, e fin qui ci sono, ma poi come fa a copiare per esempio le righe che non voglio rimpiazzare (visto che sto in pratica riscrivendo il file originale)? Forse mi sta sfuggendo qualcosa...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sta scrivendo in un nuovo file ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68
    ...Beh, fin lì ci ero arrivato anche io.
    Probabilmente lui ha utilizzato un approccio diverso rispetto a quello che avevo previsto io. Il metodo Replace( , ) scrive la nuova riga solo se trova la corrispondenza "Vecchia", e il resto delle righe le ricopia dal file originake? E' questo il punto che non mi è chiaro...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Andres7X
    Il metodo Replace( , ) scrive la nuova riga solo se trova la corrispondenza "Vecchia", e il resto delle righe le ricopia dal file originake? E' questo il punto che non mi è chiaro...
    Il metodo Replace non scrive, ma rimpiazza se trova la stringa altrimenti lascia l'originale.
    In uscita dalla Replace, quindi, avrai la stringa originale o la nuova.
    La WriteLine scriverà la stringa restituita (originale o rimpiazzata).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    68
    Grazie, ora è tutto chiaro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.