Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Java]metodo replace di String non funziona

    ho un file di testo in cui sono presenti dei caratteri "%". vorrei che nel puno in cui vi è quel carattere il file andasse a capo eliminando il carattere stesso.
    quindi ho utilizzato il metodo replace di String, ma non accade nulla.
    codice:
    import java.io.*;
    
    class instanceCreator {
    	private BufferedReader inRdf, outRead, newRead;				
    	private BufferedWriter outRdf;
    	
    	instanceCreator (String inFile, String outFile, String newFile){
    		
    	    try {
    	      inRdf = new BufferedReader(new FileReader(inFile));
    	      outRead = new BufferedReader(new FileReader(outFile));
    	      outRdf = new BufferedWriter(new FileWriter(newFile));
    	      newRead = new BufferedReader(new FileReader(newFile));
    	      } catch(IOException e) {e.printStackTrace();}
    	  }	
    	
    	
    	//metodo back
    	void back() {
    		
    		try{
    			String outputLine;
    			while ((outputLine = newRead.readLine()) != null){
    			String percent = "%";
    			String nl = "\n";
    			outputLine.replaceAll(percent, nl);
    			}
    			
    
    			newRead.close();
    		} catch(IOException e) {e.printStackTrace();}
    	} 
    }
    il metodo back() dovrebbe farlo ma nella stringa non viene cambiato assolutamente nulla.
    come posso fare?
    grazie

  2. #2

    Re: [Java]metodo replace di String non funziona

    Originariamente inviato da kob4yashi
    nella stringa non viene cambiato assolutamente nulla.
    Nella stringa outputLine?
    Oppure in quella contenuta nel file?

    Nel secondo caso è ovvio, in quanto la modifica su outputLine non si ripercuote all'interno del file.

  3. #3
    in quella del file

  4. #4
    Originariamente inviato da kob4yashi
    in quella del file
    Devi scrivere outputLine in un secondo file temporaneo.
    Al termine della scrittura elimini il file d'origine e rinomini il file temporaneo con il suo nome.

    N.B. Gli oggetti della classe String sono immutabili, quindi:
    codice:
    outputLine = outputLine.replaceAll(percent, nl);

  5. #5
    ho fatto in questo modo. quando eseguo mi stampa a video la stringa correttamente,
    ma nel file non va a capo, anche se sono spariti i caratteri "%"
    codice:
    class instanceCreator {
    	private BufferedReader inRdf, outRead, newRead;				
    	private BufferedWriter outRdf, finalRdf;
    	
    	instanceCreator (String inFile, String outFile, String newFile){
    		
    	    try {
    	      inRdf = new BufferedReader(new FileReader(inFile));
    	      outRead = new BufferedReader(new FileReader(outFile));
    	      outRdf = new BufferedWriter(new FileWriter(newFile));
    	      newRead = new BufferedReader(new FileReader(newFile));
    	      finalRdf = new BufferedWriter(new FileWriter(newFile));
    	      } catch(IOException e) {e.printStackTrace();}
    	  }
    
    //metodo back
    	void back() {
    		
    		try{
    			String outputLine;
    			String temp;
    			while ((outputLine = newRead.readLine()) != null){
    			String percent = "%";
    			String nl = "\n";
    			temp = outputLine.replaceAll(percent, nl);
    			finalRdf.write(temp);
    			System.out.print(temp);
    			}
    				
    			newRead.close();
    			finalRdf.flush();
    			finalRdf.close();
    		} catch(IOException e) {e.printStackTrace();}
    	} 
    }

  6. #6
    non va accapo perchè il sepatatore usato dallo stream è "\r\n" e non solo "\n", quindi devi sostituire il giusto separatore col replace.
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Pe far prima e meglio, sostituisci

    codice:
    String nl = "\n";
    con questo

    codice:
    String nl = System.getProperty("line.separator");
    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

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.