Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 

12.5 Die Klasse StringTokenizer



Die Klasse StringTokenizer ist eine nützliche Hilfsklasse, mit der Strings in einzelne Tokens zerlegt werden können. Ein Token wird dabei als zusammenhängende Sequenz von Zeichen angesehen, die durch Trennzeichen oder durch das Ende der Zeichenkette begrenzt ist. Die Klasse StringTokenizer implementiert das Interface Enumeration, so daß sie genauso benutzt werden kann wie die Iteratoren in den Klassen Vector oder Hashtable.

12.5.1 Anlegen eines StringTokenizers

Die Klasse StringTokenizer besitzt drei Konstruktoren:

public StringTokenizer(String str)

public StringTokenizer(String str, String delim)

public StringTokenizer(String str,
                       String delim,
                       boolean returnTokens)
java.util.StringTokenizer

Die erste Variante übergibt den String str, der tokenisiert werden soll, und bereitet das Objekt für die nachfolgenden Zugriffe auf die einzelnen Tokens vor. Die zweite Variante erwartet zusätzlich die Übergabe einer Zeichenkette delim, die alle Zeichen enthält, die als Trennzeichen zwischen zwei aufeinanderfolgenden Tokens angesehen werden sollen. Wird der parameterlose Konstruktor verwendet, so werden die Zeichen '\n', '\r', '\t' und das Leerzeichen als Begrenzer verwendet.

Der dritte Konstruktor enthält einen weiteren Parameter, returnTokens. Wird er auf true gesetzt, geben die Funktionen zur Extraktion der Tokens auch die Trennzeichen zwischen zwei Tokens zurück. Falls der Parameter false ist, werden die Trennzeichen lediglich als Begrenzer angesehen, ohne an den Aufrufer zurückgegeben zu werden.

12.5.2 Zugriff auf Tokens

Wie beim Interface Enumeration üblich, erfolgt der Zugriff auf die Tokens mit Hilfe der Methoden hasMoreElements und nextElement:

public boolean hasMoreElements()

public Object nextElement()
  throws NoSuchElementException
java.util.StringTokenizer

hasMoreElements gibt genau dann true zurück, wenn noch mindestens ein weiteres Token zur Verfügung steht, andernfalls wird false zurückgegeben. nextElement liefert das nächste Token, also den Teilstring von der aktuellen Position bis zum nächsten Trennzeichen bzw. bis zum Ende der Zeichenkette.

Obwohl sehr elegant, ist die Verwendung der Methoden des Interfaces Enumeration leider etwas umständlich, weil nextElement Instanzen der Klasse Object zurückgibt. Um die Anwendung des StringTokenizer bequemer zu machen, existiert mit den Methoden hasMoreTokens und nextToken dieselbe Funktionalität noch einmal in einer Form, bei der ein Rückgabewert vom Typ String geliefert wird:

 Tip 

public boolean hasMoreTokens()

public String nextToken()
  throws NoSuchElementException
java.util.StringTokenizer

Hier liefert nextToken kein Object, sondern einen String, und eine explizite Typkonvertierung erübrigt sich damit.

Das folgende Programm verdeutlicht die Anwendung eines StringTokenizer, der eine einfache Zeichenkette in ihre Bestandteile zerlegt:

001 /* Listing1205.java */
002 
003 import java.util.*;
004 
005 public class Listing1205
006 {
007    public static void main(String[] args)
008    {
009       String s = "Dies ist nur ein Test";
010       StringTokenizer st = new StringTokenizer(s);
011       while (st.hasMoreTokens()) {
012          System.out.println(st.nextToken());
013       }
014    }
015 }
Listing1205.java
Listing 12.5: Anwendung der Klasse StringTokenizer

 Beispiel 

Die Programmausgabe ist:

Dies
ist
nur
ein
Test

 Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com