Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Java ist auch eine Insel (2. Aufl.) von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 1.4
Java ist auch eine Insel (2. Auflage)
gp Kapitel 4 Der Umgang mit Zeichenketten
  gp 4.1 Strings und deren Anwendung
  gp 4.2 Veränderbare Zeichenketten mit der Klasse StringBuffer
    gp 4.2.1 Anlegen von StringBuffer-Objekten
    gp 4.2.2 Die Länge eines StringBuffer-Objekts lesen und setzen
    gp 4.2.3 Daten anhängen
    gp 4.2.4 Zeichen(folgen) setzen, erfragen, löschen und umdrehen
  gp 4.3 Vergleiche von Zeichenketten als String und StringBuffer
    gp 4.3.1 Sollte es ein equals() und hash() bei StringBuffer geben?
  gp 4.4 Ein paar kleine Helfer
    gp 4.4.1 Strings einer gegebenen Länge erzeugen und rechtsbündig ausgeben
    gp 4.4.2 Teile im String ersetzen
  gp 4.5 Zeichenkodierungen umwandeln
  gp 4.6 Sprachabhängiges Vergleichen mit der Collator-Klasse
    gp 4.6.1 Effiziente interne Speicherung für die Sortierung
  gp 4.7 Die Klasse StringTokenizer
  gp 4.8 StreamTokenizer
  gp 4.9 Formatieren mit Format-Objekten
    gp 4.9.1 Prozente, Zahlen und Währungen ausgeben
    gp 4.9.2 Ausgaben formatieren
    gp 4.9.3 Dezimalzahlformatierung
  gp 4.10 Reguläre Ausdrücke
    gp 4.10.1 Splitten von Zeichenketten
    gp 4.10.2 split() in String
    gp 4.10.3 Das Paket gnu.regexp
  gp 4.11 Überprüfung der E-Mail-Adressen und Kreditkarteninformationen
    gp 4.11.1 Gültige E-Mail-Adressen
    gp 4.11.2 Kreditkartennummern testen


Galileo Computing

4.7 Die Klasse StringTokenizer  toptop

Die Klasse StringTokenizer hilft uns, eine Zeichenkette in Token zu zerlegen. Ein Token ist ein Teil eines Strings, das durch bestimmte Trennzeichen (engl. Delimiter) von anderen Token getrennt wird. Nehmen wir als Beispiel den Satz »Moderne Musik ist Instrumentespielen nach Noten« (Peter Sellers). Wählen wir Leerzeichen als Trennzeichen, lauten die einzelnen Token »Moderne«, »Musik« und so weiter. Der String-Tokenizer ist nicht an bestimmte Trenner gebunden, sie können vielmehr völlig frei gewählt werden. Nur in der Voreinstellung sind Tabulator, Leerzeichen und Zeilentrenner die Delimiter.

Hinweis   In der Implementierung von StringTokenizer können nur einzelne Zeichen als Trenner verwendet werden. Es sind keine Zeichenfolgen wie »:=« denkbar.

Abbildung

Beispiel   Um einen String mit Hilfe eines StringTokenizer-Objekts zu zerlegen, wird dem Konstruktor der Klasse der zu unterteilende Text als Parameter übergeben:
StringTokenizer tokenizer;
tokenizer = new StringTokenizer( "Schweigen kann die grausamste Lüge sein." );

Sollen andere Zeichen als die voreingestellten Trenner den Satz zerlegen, kann dem Konstruktor als zweiter String eine Liste von Trennern übergeben werden. Jedes Zeichen, das in diesem String vorkommt, fungiert als einzelnes Trennzeichen:

StringTokenizer st;
st = new StringTokenizer( "Blue=0000ff\nGreen:00ff00\n", "=:\n" );

Um den Text abzulaufen, gibt es die Methoden nextToken() und hasMoreTokens(). Die Methode nextToken() liefert das nächste Token im String. Ist kein Token mehr vorhanden, wird eine NoSuchElementException ausgelöst. Damit wir frei von diesen Überraschungen sind, können wir mit der Methode hasMoreTokens() nachfragen, ob noch weitere Token vorliegen. Das folgende Stück Programmtext zeigt die leichte Benutzung der Klasse:

String s = "Faulheit ist der Hang zur Ruhe ohne vorhergehende Arbeit";

StringTokenizer tokenizer = new StringTokenizer( s );

while ( tokenizer.hasMoreTokens() )
     System.out.println( tokenizer.nextToken() );

Neben den beiden Konstruktoren existiert noch ein dritter, der auch die Trennzeichen als eigenständige Bestandteile bei nextToken() übermittelt.

Abbildung

class java.util.StringTokenizer
implements Enumeration

gp  StringTokenizer( String str, String delim, boolean returnTokens )
Ein String-Tokenizer für str, wobei jedes Zeichen in delim als Trennzeichen gilt. Ist returnTokens gleich true, so werden die Trennzeichen beim Aufzählen mit zurückgegeben.
gp  StringTokenizer( String str, String delim )
Ein String-Tokenizer für str, wobei alle Zeichen in delim als Trennzeichen gelten. Entspricht dem Aufruf von this(str, delim, false);
gp  StringTokenizer( String str )
Ein String-Tokenizer für str. Entspricht dem Aufruf von
this(str, " \t\n\r\f", false); Die Trennzeichen sind Leerzeichen, Tabulator, Zeilenende und Seitenvorschub.
gp  boolean hasMoreTokens()
Testet, ob weitere Token verfügbar sind.
gp  String nextToken()
Liefert das nächste Token vom String-Tokenizer.
gp  String nextToken( String delim )
Die Delimiter-Zeichen werden erst neu gesetzt und anschließend wird das nächste Token geholt.
gp  boolean hasMoreElements()
Ist gleich dem Aufruf von hasMoreTokens(). Existiert nur, damit das Objekt als Enumeration benutzt werden kann.
gp  Object nextElement()
Ist gleich dem Aufruf von nextToken(). Existiert nur, damit das Objekt als Enumeration benutzt werden kann. Der weniger spezifische Ergebnistyp Object macht eine Typumwandlung erforderlich.
gp  int countTokens()
Zählt die Anzahl der noch möglichen nextToken()-Methodenaufrufe. Die aktuelle Position wird dadurch nicht berührt.
nextToken() und nextElement() können eine NoSuchElementException auslösen.





1   Die Methode hasMoreElemente() ruft direkt hasMoreTokens() auf und wurde nur implementiert, da ein StringTokenizer die Schnittstelle Enumeration implementiert.





Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de