webForumDet fria alternativet

Byta ut angiven text i en fil!

5 svar · 304 visningar · startad av Poppe25

Poppe25Medlem sedan apr. 2002255 inlägg
#1

Jag har ett fönster med tre fält, ett där man anger filen, ett där man anger vilken text man vill byta ut och sist mot vad man vill byta ut. Jag tänker mig att jag borde lagra allt i en String och använda mig av StringTokenizer på ngt sätt, men vet ej hur.

Någon med bra ideer?

try{
String filNamn = textFil.getText().trim();
String str = "";
File inputFile = new File(filNamn);
FileReader in = new FileReader(inputFile);
int c;
while ((c = in.read()) != -1)
str+=c;
in.close();
System.out.println(str);
}
catch (FileNotFoundException ioe){
System.out.println("Fel inträffade i " + ioe.getMessage());
}
catch (IOException ioe){
System.out.println("Fel inträffade i " + ioe.getMessage());
}

aasahMedlem sedan mars 20034 471 inlägg
#2

Du borde väl kunna använda metoderna substring och replace i StringBuffer?

Eller också missförstår jag något.:OO

MotorheadMedlem sedan maj 20037 inlägg
#3

Detta kanske inte är det smidigaste sättet men det funkar iaf...

import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Vector;

public class WordReplacement{

public WordReplacement(String\[\] args){ 
	swap(args\[0\], args\[1\], args\[2\]);
}

private void swap(String filename, String lookFor, String replaceWith){
	Vector subStrings = new Vector();
	
	try{
		FileReader fileIn = new FileReader(filename);
		BufferedReader in = new BufferedReader(fileIn);
	
		while(in.ready()){
			subStrings.addElement(in.readLine());
		}
		
		in.close();
		
		FileWriter fileOut = new FileWriter(filename);
		BufferedWriter out = new BufferedWriter(fileOut);			
		
		Pattern p = Pattern.compile(lookFor);
		Matcher m; 			

		for(int i=0;i\<subStrings.size();i++){
			m = p.matcher(subStrings.elementAt(i).toString()); 
			out.write(m.replaceAll(replaceWith));	
			out.newLine();
		}	
		
		out.close();
	}catch(IOException ioe){
		System.out.println("Something went wrong! " + ioe.getMessage());
	}
}

public static void main(String\[\] args){
	WordReplacement wr;
	
	if(args.length == 3)
		wr = new WordReplacement(args);
	else
		System.out.println("Need 3 arguments...\\n  1) File to read  2) What to replace 3) What to replace with");
}

}

Poppe25Medlem sedan apr. 2002255 inlägg
#4

har testat din kod men får den inte att fungera...hur skulle det gå till med metoderna substring och replace i StringBuffer?

MotorheadMedlem sedan maj 20037 inlägg
#5

Tjena.
Programmet funkar utmärkt för mig. Vilken ver. på sdk kör du?
Programmet använder java.util.regex vilket finns med sen sdk 1.4.
Angående substring och replace så kan du ju läsa in en delsträng
och byta ut med replace(char, char) men jag skulle rekomendera replaceAll(string, string) som även den finns med sen sdk 1.4.

aasahMedlem sedan mars 20034 471 inlägg
#6

Poppe25 skrev:

har testat din kod men får den inte att fungera...hur skulle det gå till med metoderna substring och replace i StringBuffer?

Tanken var att du kunde mellanlagra resultatet i en StringBuffer, men andras idéer verkar bättre.

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)