Textdatei durchlesen und bestimmte Wörter ersetzen

jorgeHX

Erfahrenes Mitglied
Hallo Leute,
ich will meine Textdatei durchsuchen und dann z.b. gesamte Sätze durch einen anderen Text ersetzen.


z.b. bei folgenden Dummysätzen:


Hallo Peter, was machst du heute Abend?
Grüß dich Jim, was machst du heute Abend?

Bei diesem Satz will ich den String "Peter" suchen und an derselben Stelle durch "Lisa" ersetzen. Gleichzeitig soll "Jim" durch "Stefan" ersetzt werden...


Da gibt es doch sowas wie Pattern oder? Ich weiß nur nicht wie ich es dann an der richtigen Stelle ersetze.

Kann mir da jemand weiterhelfen? Danke,
JP
 
Moin!
Was genau hast du denn vor? Geh mal ein bisschen mehr ins Detail...
Bzw. um mal bei deinem Beispiel zu bleiben, wird Peter immer durch Lisa, und Jim immer durch Stefan ersetzt?
Wird die Ersetzung Jim -> XXX dadurch bestimmt, wodurch du Peter ersetzt?

*grüssle*
MeinerEiner
 
Hi,
ja das Beispiel war doof, gebe ich zu :-)

Letztendlich will ich aus einem Ordner sämtliche Javadateien (ist ja wie text) laden und dann Beschriftungen von Buttons etc. ersetzen. Wenn also z.B. ein Button momentan JButton myButton = new JButton("Weiter") enthält, will ich durch alle Javadateien durchlaufen und "Weiter" durch "Next" ersetzen.

Schleifen etc. hab ich auch schon gemacht. Ich bräuchte nur nen Anstoß, wie ich die Datei auf "Weiter" durchsuchen kann und dann bei Fund an dieser Stelle durch "Next" ersetzen kann...


War das verständlich?

Danke
 
Noch ein kleiner Nachtrag. Gibt es die Möglichkeit einen ganzen Ordner in Java zu laden, so dass dann alle darin enthaltenen Dateien der Reihe nach durchlaufen werden (?) und dann nach Austausch der Begrifflichkeiten unter dem alten Namen abgespeichert werden?

ich weiß die hilfe zu schätzen. Thx
 
Also letztendlich willst du auf eine Internationalisierung deines Programms hinarbeiten, oder? Falls ja schau dir das mal an: http://java.sun.com/docs/books/tutorial/i18n/intro/index.html

Falls es dir nur darum geht, ein für allemal deutsch nach englisch zu übersetzen, würde ich die deutsch -englisch päarchen in einer Properties Datei speichern :http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html
mit den deutschen Wörtern als Key.
Code:
BufferedReader in=new BufferedReader(new FileInputStream(datei));
String zeile="";
Properties prop = new Properties();
prop.load(new FileInputStream(properties));
KeySet<String> keys = prop.keySet();
while((zeile=in.readLine())!=null){
   Iterator<String> iter = new keys.iterator();
   while(iter.hasNext()){
        String next = iter.next();
        if(zeile.contains(next)){
             zeile.replaceAll(next,prop.get(next)));
        }
    }    
}


Was deine zweite Frage angeht, hier im Forum müsste es schon Threads geben, um Ordner-/sDateitrukturen rekursiv durchzulaufen. Und für jede gefundene Datei lässt du dann die obige Methode durchlaufen...


*grüssle*
MeinerEiner
 
Hi,
sag mal, geht dein Code auch richtig?

Es gibt Fehler beim replace, key und FileInputStream

Weißt du da Rat?
 
Folgende Fehler kommen:

cannot find symbol; symbol : constructor BufferedReader(java.io.FileInputStream), location: class java.io.BufferedReader at line 67 (67:18)

cannot find symbol; symbol : class KeySet, location: class LesenSchreiben at line 76 (76:9)

java.util.Iterator is abstract; cannot be instantiated at line 78 (78:37)


Kann mir da jemand weiterhelfen
 
tüdelü.
tja das kommt davon wenn unsereiner meint, er könne mal schnell so ein bisserl code posten, ohne ihn vorher zu überprüfen :-)
Verbessert sieht das ganze dann so aus:
Code:
try{
            BufferedReader in= new BufferedReader(new FileReader(fileToChange));
            String zeile="";
            Properties prop = new Properties();
            prop.load(new FileInputStream(propertiesFile));
            Set<Object> keys = prop.keySet();
            while((zeile=in.readLine())!=null){
                Iterator iter = keys.iterator();
                while(iter.hasNext()){
                    String next = (String) iter.next();
                    if(zeile.contains(next)){
                        zeile = zeile.replaceAll(next,(String) prop.get(next));
                    }    
                }
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
 
Zuletzt bearbeitet von einem Moderator:
Also super...

t bei mir nun fast auch.
Allerdings klappt die replace-Methode nicht... Er finde liest aus der Property die Einträge aber ersetzt werden sie nicht...
Liegt es an mir?
 
Zurück