String parsen in Java

Dieses Thema im Forum "Java Basics - Anfänger-Themen" wurde erstellt von M.C.S., 8. Feb. 2006.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. M.C.S.

    M.C.S. Neues Mitglied

    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:
    Code (Text):

        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());

                }
            }
        }
     
     
  2. byte

    byte Neues Mitglied

    Schau Dir mal Regex an.
     
  3. M.C.S.

    M.C.S. Neues Mitglied

    Ah schön. Da gibt es ja auch mit split(String s) das Gegenstück zu "asCollectionOfSubstrings". Fein fein. Ich muss mich wohl doch mal mit regex anfreunden.

    Streams helfen aber trotzdem nicht, oder?
     
  4. bygones

    bygones Guest

    was willst du mit Streams wenns ums reine splitten geht ?

    Schau dir die Klassen Pattern / Matcher / Scanner an
     
  5. M.C.S.

    M.C.S. Neues Mitglied

    Keine Ahnung! Ich steige halt um von Smalltalk auf Java, und in Smalltalk konnte man auch sowohl mit String als auch mit Streams auf Strings arbeiten, wobei letzteres einen _immensen_ Geschwindigkeitsvorteil brachte. Hätte ja sein können, dass das Verwenden von Streams unter Java auch Vorteile hat. Aber nach euren Aussagen scheint dem ja nicht so zu sein, danke.
     
  6. byte

    byte Neues Mitglied

    Gibt natürlich auch in Java eine Menge unterschiedlicher Streams. Aber für Stringoperationen benutzt man halt String oder StringBuffer oder StringBuilder oder Regex in Java.
     
Die Seite wird geladen...
Status des Themas:
Es sind keine weiteren Antworten möglich.