StringTokenizer

Leyja

Mitglied
Hallo,

ich hab ein Problem mit dem StringTokenizer. In einer Datei habe ich Inhalte abgelegt, die beim Auslesen gespeichert und in Objekte umgewandelt werden sollen. Jede Zeile soll ein Objekt sein, also haben wir eine Zeile eingelesen und wollen die nun mithilfe des StringTokenizers zerlegen.
Zuerst kommt der Name, der soll in einer Variablen "name" gespeichert werden. Dann kommt eine beliebige Anzahl an Zuständen, die in einem Array gespeichert werden sollen und danach eventuell noch ein Passwort, muss aber nicht sein.
Aufbau ist folgendermaßen:
Name, dann kommt ein Tab (\t), dann kommen ein oder zwei Zustände (jeweils ein Wort, die ebenfalls durch \t getrennt werden), dann ein =.
Nun haben wir gedacht, dass wir das erste Wort in der Zeile im Namen speichern, was soweit auch funktioniert. Dann hätten wir das ganze gern so gemacht, dass wir ne Schleife machen, alles in ein Array packen, was kommt und sobald ein = auftaucht, soll er abbrechen.
Das ganze klappt aber nicht so ganz, weil man ja nur die Methoden nextToken und hasMoreTokens hat, rufe ich nextToken auf, springt er da auch hin, anstatt beim aktuellen Element zu bleiben und nur zu gucken, ob da vielleicht ein = ist oder nicht. Das = wird nun auch immer als Zustand in unserem Array abgespeichert, was aber nicht sein soll.

Ich hoffe, hier hat jemand eine Lösung und kann mir schnell helfen :-)

Gruß, Leyja
 
Warum ihr könnt doch über jeden Token vorm sichern iter. bzw. auf anderem Wege prüfen ob dieser String ein = enthält wenn nicht ist klar wenn doch zerlegt ihr diesen String mit subString(n,m)

Oder Ihr zerlegt die ganze Zeile vor der Verarbeitung.

Vielleicht zuerst den new java.util.StringTokenizer("=");

wenn 2 Token (count)
dann den 2ten als Passwort sichern
und den ersten nach eurem Verfahren weiter zerlegen

es gibt auch String.split("=")
 
Bitte nicht den StringTokenizer benutzen:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

String strg = <name>\t<wert1>\t<wert2>=

Das ist doch recht einfach:
String arr [] = strg.split("=");

arr[0] enthält alles vor dem gleich

String arr1[] = arr[0].split("\t");
An index 0 steht der Name, an 1 der erste Wert, an 2 der zweite Wert.
 

Neue Beiträge

Zurück