Text auslesen und bearbeiten

Hallo - wer kann mir helfen?

Ich möchte mit Hilfe von Java einen Text auslesen und immer bei bestimmten Zeichen eine bestimmte Anweisung machen (Zeichen treten immer mehrmals im Text auf):

wenn folgendes zeichen: ’ steht, soll alles bis zu diesem zeichen ausgelesen werden und in eine neue reinkopiert werden
wenn folgendes zeichen: : steht, soll ein Zeilenwechsel anstatt dieses Zeichens ein Zeilenwechsel eingefügt werden.

Leider weiß ich nicht wie ich an diese sache rangehen kann.

Wenn jemand eine Idee oder Quellcode hat - bitte melden!

Danke

Marco

Hi,
ein klassischer Fall fuer RegEx. In Perl wuerde das etwa so aussehen:
my $text =…
s/:/\n/gm #ersetzt die : durch ein newline
/’(.*?)’/ #danach enthaelt $1 den ersten Substring, der von zwei ‚‘ begrenzt ist.
Meines Wissens unterstuetzt Java perlcompatible RegEx, das duerfte also kein Problem darstellen…

Viel Erfolg beim Umsetzen,
Moritz

Hallo Marco

Also ich würde folgendermassen vorgehen:

  1. Alles mal aus der Datei lesen und in einen String pappen.

wenn folgendes zeichen: : steht, soll ein Zeilenwechsel
anstatt dieses Zeichens ein Zeilenwechsel eingefügt werden.

  1. myString.replace(’:’, ‚\n‘);
    Frage an die Experten: wird hier eigentlich pro Ersetzung ein neuer String angelegt? Wenn ja, wäre das allenfalls von der Performance her nicht so optimal.

wenn folgendes zeichen: ’ steht, soll alles bis zu diesem
zeichen ausgelesen werden und in eine neue reinkopiert werden

  1. Worein willst Du das kopieren? Erklär das bitte nochmals

  2. Schreiben.

Grüsse
Andrea

Perl? ne!
Hi Moritz,

sorry aber da ich Java in Verbindung mit Oracle 8i benutzen möchte, und oracle 8i kein perl unterstützt - kann ich leider nict auf perl zurückgreifen.

marco

Hallo Marco

Hallo Marco,

Lesen eines Files in einen StringBuffer geht beispielsweise so:

public static StringBuffer readFileToStringBuffer(String filePathAndName) {
FileInputStream fis;
try {
fis = new FileInputStream(filePathAndName);
} catch(FileNotFoundException e) {return null;}

String line;
StringBuffer text = new StringBuffer("");
BufferedReader br;
try {
br = new BufferedReader(new InputStreamReader(fis));

while ((line = br.readLine()) != null) {
text.append(line);
}
fis.close();
br.close();
} catch(Exception e) {return null;}

return text;
}

Den StringBuffer kannst du dann mit .toString() in einen String verwandeln.

Ab Java 1.4 gibts auf Strings auch die Methode: .split(String regex), die mit regulären Ausdrücken arbeitet (analog der bereits erwähnten .replace-Methode).

Mit split kannst du Deinen String in einzelne Portionen aufsplitten, als Ergebnis bekommst du dann ein String-Array.
Das sieht dann in etwa so aus:

String[] lS = lBeispielString.split(":");

Dann kannst Du pro String aus dem Array machen, was Du willt.
z.B. ihn manipulieren, wegschreiben, einen Zeilenumbruch hinzufügen, etc.

Gruß
Claudia

Hallo Marco,

Java 1.4 unterstützt RegEx von Haus aus.

Schau mal in der API-Doc nach.

Viele Grüsse
Simon