Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Handbuch der Java-Programmierung |
<< | < | > | >> | Kapitel 17 - Utility-Klassen II |
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.
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. In der Variante ohne delim 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.
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: |
|
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 /* Listing1701.java */ 002 003 import java.util.*; 004 005 public class Listing1701 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 } |
Listing1701.java |
Die Programmausgabe ist:
Dies
ist
nur
ein
Test
In der Standardbibliothek des JDK gibt es noch einen zweiten Tokenizer, nämlich die Klasse StreamTokenizer aus dem Paket java.io. Im Gegensatz zum StringTokenizer arbeitet sie nicht mit Strings, sondern mit Streams (siehe Kapitel 18) und läßt sich umfangreicher konfigurieren. Sie kann zwischen Zahlen und Wortsymbolen unterscheiden und auf Wunsch Kommentare (in C/C++-Syntax) ignorieren. Mit ihrer Hilfe lassen sich Tokenizer für einfache Sprachen aufbauen. |
|
Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Addison Wesley, Version 2.0 |
<< | < | > | >> | © 2000 Guido Krüger, http://www.gkrueger.com |