Thomas: StringTokenizer

Hi!

Wie kann ich diese Strings:

"Befehl1 Parameter1 Parameter2"
"Befehl2 Parameter1 Parameter2"

so einlesen, dass ich als erstes überprüfen kann, um welchen Befehl es sich handelt und als zweites die Parameter in ein Array einlesen?

Um die Parameter einzulesen könnte ich ja den StringTokenizer verwenden, das Problem ist, dass ich ja nicht weiss ab welchem Zeichen ich einlesen muss, da die Befehle unterschiedlich lang sein können...

Gruss T.

  1. Hallo,

    Wie kann ich diese Strings:

    "Befehl1 Parameter1 Parameter2"
    "Befehl2 Parameter1 Parameter2"

    so einlesen, dass ich als erstes überprüfen kann, um welchen Befehl es sich handelt und als zweites die Parameter in ein Array einlesen?

    Um die Parameter einzulesen könnte ich ja den StringTokenizer verwenden, das Problem ist, dass ich ja nicht weiss ab welchem Zeichen ich einlesen muss, da die Befehle unterschiedlich lang sein können...

    Das spielt ja für den StringTokenzier keine Rolle. Er unterteilt ja den String nach Trennzeichen (z.B. Leerzeichen).

    StringTokenizer st = new StringTokenizer("Befehl1 Parameter1 Parameter2");

    String befehl = st.nextToken();
    String[] parameter = new String[10]; // maximal 10 Parameter
    int i=0;
    while (st.hasMoreTokens()) {
       parameter[i++] = st.nextToken();
    }

    Einfacher und besser geht es übrigens mit der String.split-Funktion.

    String[] befehlundparameter
          = "Befehl1 Parameter1 Parameter2".slpit("\s");

    In befehlundparameter[0] steht dann "Befehl1"
    in befehlundparameter[1] steht "Parameter1"
    in befehlundparameter[2] steht dann "Parameter2"

    Gruß
      MichaelB

    1. Hallo MichaelB,

      String[] befehlundparameter
            = "Befehl1 Parameter1 Parameter2".slpit("\s+");

      Mehrere Leerzeichen zu erlauben, wäre evt. besser.
      Außerdem klappt das natürlich erst ab Java 1.4.

      Grüße

      Daniel

      1. Danke, ich hab das mit dem split-Befehl benutzt, ist wirklich einfacher als StringTokenizer...

      2. Hallo,

        String[] befehlundparameter
              = "Befehl1 Parameter1 Parameter2".slpit("\s+");
        Mehrere Leerzeichen zu erlauben, wäre evt. besser.

        \s bezeichnet nicht nur Leerzeichen, sondern auch andere Whitespaces wie Tabulator usw. Aber in der Sache hast Du natürlich recht.

        Außerdem klappt das natürlich erst ab Java 1.4.

        Stimmt. Ein Manko, wenn man es in Applets braucht. Hier war aber offensichtlich eine Applikation gemeint.

        Gruß
           MichaelB