String parsen in Java

Diskutiere String parsen in Java im Java Basics - Anfänger-Themen Forum

  1. #1
    M.C.S.


    String parsen in Java

    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:
    	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. #2
    byte


    Schau Dir mal Regex an.

  3. #3
    M.C.S.


    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. #4
    bygones

    was willst du mit Streams wenns ums reine splitten geht ?

    Schau dir die Klassen Pattern / Matcher / Scanner an

  5. #5
    M.C.S.


    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. #6
    byte


    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.

Java Videokurs

Keine Antwort auf Deine Suche gefunden? Registriere Dich kostenlos und stelle Deine eigene Frage zu Java!

Jetzt kostenlos registrieren