String zerlegen

atango

Grünschnabel
Hallo zusammen,

ich habe folgenden String aus einer Textdatei ausgelesen.
Bücher := SET OF ( Buch :=TUPEL OF (ISBN: String;
Titel: String;
Verlagsname: String;
Autoren:= LIST OF( Autor: String );
Stichworte:= SET OF( Stichwort: String );
Versionen:= SET OF
( Version := TUPEL OF (Auflage:Integer;
Jahr:Integer;))))

Jetzt muss ich ihn, in dieser Form Zerlegen:

Bücher := SET OF;
Buch := TUPEL OF;
ISBN :String;
Titel : String;
Verlagsnamen : String;
Autoren := LIST OF;
Autor : String;
Stichworte := LIST OF;
Stichwort : String;
Versionen := SET OF;
Version := TUPEL OF;
Auflage : Integer;
Jahr : Integer;

Wie mache ich das am besten?

Gruß
 
Zuletzt bearbeitet:
Erstmal danke dir Tobias für den Tipp.
Ich habe mich den ganzen Vormittag damit gequellt und nicht geschafft, den Regulären Ausdruck so hin zu bekommen das es funktioniert.
Nach „:=“ oder „:“ zu suchen ist nicht schwer. Aber nur das Wort vor und nach dem gefundenen Zeichen auszugeben, kriege ich nicht hin.

zB.: Bücher := SET OF ( Buch := TUPEL OF (ISBN: string…..))

Ergebnis soll so aussehen:

Bücher := SET OF
Buch := TUPEL OF
ISBN : string
.
.
.
.
 
Hallo,

verstehe ich das richtig, das das hier:
Code:
Bücher := SET OF ( Buch :=TUPEL OF (ISBN: String;
Titel: String;
Verlagsname: String;
Autoren:= LIST OF( Autor: String );
Stichworte:= SET OF( Stichwort: String );
Versionen:= SET OF
( Version := TUPEL OF (Auflage:Integer;
Jahr:Integer)))

ein String ist oder ist jede Zeile eine String?
Wenn es ein String ist, dann ersetze doch erstmal die überflüssigen Zeichen wie "(", ")" etc. erstmal mit "", also
Code:
deinstring.replace("(", "").replace(")". "");
.
Anschließend teilst Du ihn an den Leerzeichen und schreibst alles in ein Array, dann durchsuchst Du Dein Array nach := oder : und gibst erst dann die Stelle davor, die, wo Du := oder : gefunden hast und die Stelle danach aus, dann ist es doch fast das was Du willst oder nicht?

Ggf. musst Du halt noch Leerzeichen einfügen.
 
Wie kann ich den String Wort für Wort absuchen und auch so in Array schreiben? Ich habe es nur Zeilenweise hinbekommen.
Gruß
 
So in etwa sollte es aussehen:
Code:
String str = "Bücher := SET OF ( Buch :=TUPEL OF (ISBN: String;
Titel: String;
Verlagsname: String;
Autoren:= LIST OF( Autor: String );
Stichworte:= SET OF( Stichwort: String );
Versionen:= SET OF
( Version := TUPEL OF (Auflage:Integer;
Jahr:Integer)))";
Array strsplit = new Array();

strsplit[] = str.split(" ");
Dann hast Du jedes Wort einzeln im Array, Also strsplit[0] wäre "Bücher", strsplit[1] wäre ":=" usw.

Gruß KlaDi.
 
Hallo,

oder so
Code:
import java.util.*;
import java.util.StringTokenizer;

public class ReplaceString
{
    public static void main(String[] args)
    {
        String text = "Bücher := SET OF ( Buch :=TUPEL OF (ISBN: String;" +
            "Titel: String;"+
            "Verlagsname: String;"+
            "Autoren:= LIST OF( Autor: String );"+
            "Stichworte:= SET OF( Stichwort: String );"+
            "Versionen:= SET OF"+
            "( Version := TUPEL OF (Auflage:Integer;"+
            "Jahr:Integer)))";
        System.out.println(text);
        text = text.replace('(',';').replace(')',' ');
        StringTokenizer tokenizer = new StringTokenizer( text, ";" );
        ArrayList zeile = new ArrayList();
        while (tokenizer.hasMoreTokens())
        {
            String a = (tokenizer.nextToken()).trim()+";";
            zeile.add(a);
            System.out.println(a);
        }
        System.out.println(zeile);
    }
}
Im Array oder so als Ausgabe.

Bücher := SET OF ( Buch :=TUPEL OF (ISBN: String;Titel: String;Verlagsname: String;Autoren:= LIST OF( Autor: String );Stichworte:= SET OF( Stichwort: String );Versionen:= SET OF( Version := TUPEL OF (Auflage:Integer;Jahr:Integer)))
Bücher := SET OF;
Buch :=TUPEL OF;
ISBN: String;
Titel: String;
Verlagsname: String;
Autoren:= LIST OF;
Autor: String;
Stichworte:= SET OF;
Stichwort: String;
Versionen:= SET OF;
Version := TUPEL OF;
Auflage:Integer;
Jahr:Integer;
[Bücher := SET OF;, Buch :=TUPEL OF;, ISBN: String;, Titel: String;, Verlagsname: String;, Autoren:= LIST OF;, Autor: String;, Stichworte:= SET OF;, Stichwort: String;, Versionen:= SET OF;, Version := TUPEL OF;, Auflage:Integer;, Jahr:Integer;]
 
Zuletzt bearbeitet:
Hallo,
habe folgendes Problem:

Möchte aus einer text.txt Datei alles in einen StringBuffer einlesen und mit toString(); die Variable s in einen String umwandeln und dann ausgeben. Wenn ich direkt ein String nehme, also ohne aus Datei zu lesen sondern direkt von String, funktioniert das. Hat jemand ein Vorschlag?

Gruß

Code:
import java.io.FileReader;
import java.util.ArrayList;
import java.util.StringTokenizer;


public class DatenTypeAuslesen {
	
	private static StringBuffer s = new StringBuffer();
	
	public static void main(String[] args){
		//Insstanz von FileReader erzeugen und dadurch
		// Stream öffnen
		try{
			
			FileReader reader = new FileReader("text.txt");
			int einlesen = 0;
			//StringBuffer s = new StringBuffer();
			// Solange Zeichen lesen bis -1 zurückgegeben wird
			while ((einlesen = reader.read()) != -1) 
				{
					//char zeichen = (char)einlesen;
					s.append(einlesen);
			
					// Zeichen auf Output-Stream zur Konsole schreiben  
					//System.out.println(einlesen);
					// Stream schließen
				}
			
			reader.close();
			}
		catch (Exception e) 
		{
			  System.out.println("Es trat ein Fehler auf");
		}
						
        String text = s.toString();
        //System.out.println(text);
        text = text.replace('(',';').replace(')',' ');
        StringTokenizer tokenizer = new StringTokenizer( text, ";" );
        ArrayList zeile = new ArrayList();
        while (tokenizer.hasMoreTokens())
        {
            String a = (tokenizer.nextToken()).trim()+";";
            zeile.add(a);
            System.out.println(a);
        }

}
}

Alles was ich bekomme sind Zahlen

66252991041011143258613283698432797032406611799104325861328485806.............
 
Zurück