Hallo allerseits,
ich möchte gerne einen String parsen und die einzelnen Elemente dann weiterverwerten. Dabei stößt man auf Zahlen und Strings, die in einem Verhältnis zueinander stehen. Das ganze habe ich bis jetzt mit StringTokenizer realisiert.
Vorher habe ich in Smalltalk programmiert, und da ging das meines Erachtens nach viel eleganter mit Streams, die man auf Strings legen konnte. Geht das in Java auch oder ist hier der StringTokenizer _der_ Weg zum Parsen von Strings?
Falls ihr wissen wollt, was geparst werden soll, hier ein Link zu einen Beispiel:
Spionagebericht aus einem Browser-Game
Gruß,
Marcus
Edit:
Um die erste Zeile zu parsen, habe ich z.B. folgenden Code geschrieben, den ich aber ziemlich klobig finde:
ich möchte gerne einen String parsen und die einzelnen Elemente dann weiterverwerten. Dabei stößt man auf Zahlen und Strings, die in einem Verhältnis zueinander stehen. Das ganze habe ich bis jetzt mit StringTokenizer realisiert.
Vorher habe ich in Smalltalk programmiert, und da ging das meines Erachtens nach viel eleganter mit Streams, die man auf Strings legen konnte. Geht das in Java auch oder ist hier der StringTokenizer _der_ Weg zum Parsen von Strings?
Falls ihr wissen wollt, was geparst werden soll, hier ein Link zu einen Beispiel:
Spionagebericht aus einem Browser-Game
Gruß,
Marcus
Edit:
Um die erste Zeile zu parsen, habe ich z.B. folgenden Code geschrieben, den ich aber ziemlich klobig finde:
Code:
private void parseSB(String sb) {
Boolean gefunden = false;
String token, position;
StringTokenizer st1, st2;
st1 = new StringTokenizer(sb, "\n");
while (st1.hasMoreTokens() && !gefunden) {
token = st1.nextToken();
if (token.startsWith("Spionagebericht:")) {
gefunden = true;
st2 = new StringTokenizer(token);
// Überspringe "Spionagebericht:"
st2.nextToken(":");
// Alles bis zu "(" ist Koloniename
kolonie = st2.nextToken("(").substring(1).trim();
System.out.println(kolonie);
// bis ")" gehört zur Position
position = st2.nextToken(")").substring(1);
System.out.println(position);
// der Rest ist der Spielername
spieler = st2.nextToken("\n").substring(1).trim();
System.out.println(spieler);
// Position zerteilen in Koordinaten-Argumente
st1 = new StringTokenizer(position, ":");
x = Integer.parseInt((String) st1.nextElement());
y = Integer.parseInt((String) st1.nextElement());
planet = Integer.parseInt((String) st1.nextElement());
}
}
}