Java StringTokenizer Beispiel

StringTokenizer Beispiel

Strings lassen sich in Java mit der Klasse StringTokenizer sehr leicht anhand von Trennzeichen zerlegen.
Dieses Beipsiel zeigt, wie es geht.

Das Beispiel zerlegt einen String, der sowohl mit Pipes ("|") als auch mit Semikolons (";") getrennte Einzelwerte enthalten kann. Semikolons werden zum Beispiel in CSV-Dateien als Trennzeichen verwendet, Pipes sind in anderen Situationen durchaus üblich. Entscheidend ist, daß das (oder die) Trennzeichen beim StringTokenizer beliebig wählbar ist (oder sind).

Daß man mehrere Trennzeichen angeben kann, und der StringTokenizer dann auf jedes davon reagiert, ist ein nettes und manchmal sehr hilfreiches Detail.


    public static boolean printZerlegt(final String data) {
        final StringTokenizer st = new StringTokenizer(data, ";|");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
    }
    public static void main(final String[] args) {
        printZerlegt("Name;Vorname;Geburtsdatum;Geburtsort");
        printZerlegt("Name|Vorname|Geburtsdatum|Geburtsort");
        printZerlegt("Name|Vorname;Geburtsdatum;Geburtsort");
    }

Im Beispiel werden die einzelnen Teilstrings einfach nur nach System.out geschrieben; aber das ist natürlich nur willkürlich hier im Beispiel so. In der Regel wird man die extrahierten Teilstrings anders weiter verarbeiten.

Genauso praxisfern ist hier natürlich die Datenquelle. Typischerweise ist diese nicht im Programmcode codiert, sondern stammt zum Beispiel aus einer Datei.

Ein Praxisbeispiel, wie man die Klasse StringTokenizer einsetzt, zeigt der Artikel über die Verarbeitung von CSV-Dateien.

Ganzzahl-Teil einer Flieskommazahl parsen

Anderes Beispiel: wenn die Performance zur Laufzeit keine große Rolle spielt, kann man mit einem StringTokenizer sehr einfach den ganzzahligen Teil einer Flieskommazahl parsen:
Nehmen wir an, wir haben eine Zahl als String, von der wir vorab nicht wissen, ob sie eine Ganzzahl ist oder nicht - von der uns aber nur der Ganzzahlanteil interessiert.
Folgende Implementierung dürfte unschlagbar kurz sein:

    public static int parseGanzzahlTeil(final String zahl) {
        return Integer.parseInt(new StringTokenizer(zahl, ",. ").nextToken());
    }

Dieser Programmcode (nur eine Zeile!) funktioniert für alle Ganzzahlen (sofern sie den Bereich des Datentyps int nicht überschreiten), sowie für alle Gleitkommazahlen, bei denen der Gleitkomma-Anteil mit Punkt oder Komma getrennt ist - und selbst wenn die Zahl führende oder abschließende Leerzeichen enthält.



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren