Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9

    Java: Sostituzione parola file testo

    Salve a tutti

    Sto cercando di sostituire una parola contenuta in una particolare stringa di un file testo.
    Ci sono più occorrenze di questa parola all'interno del file, però riesco a leggere una stringa alla volta senza alcun problema.
    Ho provato poi con il comando String.replace(parolaDaSostituire, NuovaParola), ma non ottengo nessun cambiamento nel file.
    Dove potrebbe essere l'errore? Forse dovrei scrivere un'ulteriore comando di sovrascrittura?
    Il file viene aperto tramite BufferedReader in modo da trovare le stringhe che contengono quella parola.

    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Sposto nel forum Java.
    PS: Se non posti il codice e non ci dici esattamente quale errore ti viene riportato (dal compilatore o dall'esecutore) non sapremo mai dov'è l'errore.
    PPS: il metodo replace() di String ritorna una nuova stringa, essendo l'oggetto String immutabile.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Ti ringrazio

    Il codice non riporta nessun errore - praticamente non fa niente. Più che altro volevo capire se esiste un modo per sostituire tutte le occorrenze di questa parola nel file prendendo le nuove parole da un arraylist.

    Il metodo replace risulta quindi errato?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da shi
    Ti ringrazio
    Di nulla

    Il codice non riporta nessun errore - praticamente non fa niente. Più che altro volevo capire se esiste un modo per sostituire tutte le occorrenze di questa parola nel file prendendo le nuove parole da un arraylist.
    Sì, ma se noi non vediamo cosa hai scritto, difficilmente riusciremo a capire perchè non fa niente...

    Il metodo replace risulta quindi errato?
    No, al contrario... è il metodo corretto, ma va usato nel modo corretto:

    codice:
    String row = "Questa è una riga letta dal file";
    
    // Sostituisco la parola "riga" con la parola "linea"
    String nuovaLinea = row.replace("riga", "linea");
    
    // Poi salverò la stringa contenuta in "nuovaLinea" nel file
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    E' talmente lungo e complicato da spiegare il codice che non vale la pena postarlo, vorrei solo capire perché non avviene la sovrascrizione

    Comunque avevo utilizzato il metodo replace proprio come hai detto tu

    Quando dici "// Poi salverò la stringa contenuta in "nuovaLinea" nel file" questo dovrebbe già avvenire in automatico oppure (come penso che sia) devo scrivere un comando apposito?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Quello che mi pare di capire , secondo me sta proprio in questo il tuo errore , tu ottieni una riga alla volta il testo del file , a questa riga invochi il replace MA tu così hai modificato la stringa estratta (vedila come la copia) non la riga del file , quindi devi sovrascrivere il file con la riga modificata al posto di quella originale..

    Una forse migliore soluzione (se il file da leggere non è troppo grande):
    -istanzi uno StringBuilder
    -tramite un BufferedReader (del tuo file) ottieni riga per riga il suo testo e man mano appendi tale riga nello StringBuilder
    -una volta letto e ottenuto tutto il testo del file (che ora sta nello StringBuilder) invochi sul contenuto dello SB in formato stringa ( nomeStringBuilder.toString () ) il metodo replaceAll (stringaDaCambiare , nuovaStringa)
    -procedi con la sovrascrittura del file con la nuova stringa (NON lo fa in automatico!!non stai modificando in realtà il testo del file ma una copia di esso)


  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Proverò questa soluzione Grazie

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Davo per scontato che se non si scrive nulla sul file, nulla venga modificato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Forse sei nato con la camicia... ieri ho scritto un post sul mio blog che ti risolve il problema (se ho capito bene la tua difficoltà!).

    Pensa che mi aveva ispirato il mio capo... farai carriera!!

    il link: http://lancill.blogspot.com/2012/09/...i-un-file.html

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.