Java: Einen String aufteilen

Beim Programmieren kommt es häufig vor, dass Daten von einer Form in eine andere gebracht werden müssen. Ein Beispiel hierfür ist das Zerlegen von Strings in einzelne Teilmengen. Die Java Standardbibliothek liefert Ihnen hierfür eine eigene Funktion, die wir Ihnen hier näherbringen wollen.

Die split-Funktion

Die String-Klasse bietet Ihnen eine Funktion, um eine Zeichenkette in Teilmengen aufzuteilen. Die Signatur der Funktion sieht folgendermaßen aus:

public String[] split(String regex)


Die Funktion erwartet also einen String als Eingabeparameter und gibt ein String-Array zurück. Beim Eingabeparameter handelt es sich um einen regulären Ausdruck, der spezifiziert, an welchen Stellen der String aufgeteilt werden soll. Zur Erklärung soll folgendes Beispiel beitragen:

String numbers = "31-x-8-x-6-x-12-x-19-x-42";
String[] split = numbers.split("-x-"); // [31, 8, 6, 12, 19, 42]

System.out.println(split[0]); // Gibt "31" aus
System.out.println(split[1]); // Gibt "8" aus

Der String numbers enthält verschiedene Zahlen, welche durch ein Minus getrennt werden. Die Memberfunktion split nimmt dieses Zeichen als Argument entgegen und gibt die einzelnen Substrings genau zwischen diesen Zeichen in einem Array zurück. Wichtig ist hierbei, dass der im Argument übergebene String ein regulärer Ausdruck ist. Das bedeutet, wenn ein Regex-Metacharacter gefunden werden soll, muss diesem ein doppeltes Backslash (\\) vorangestellt werden:

String numbers = "31[-]8[-]6[-]12[-]19[-]42";
String[] split = numbers.split("\\[-\\]"); // [31, 8, 6, 12, 19, 42]

Regex-Metacharacters sind ( ) { { \ ^ $ | ? * + . < > - = !

Reguläre Ausdrücke

Bei komplizierteren Strings bietet es sich an, reguläre Ausdrücke in der split-Funktion zu verwenden. Selbst wenn ein String verschiedene Arten von Zeichenketten zwischen den gesuchten Substrings hat, können Sie so immer noch ohne Probleme die Substrings identifizieren.

String numbers = "31-=dq-8-ab-6-rt-12-xz-19-??-42";
String[] split = numbers.split("-[^0-9]*-"); // [31, 8, 6, 12, 19, 42]

Der reguläre Ausdruck "-[^0-9]*-" findet alle Zeichenketten, die keine Zahlen sind, und von zwei Minus-Zeichen eingeschlossen sind. Das sind genau die Zeichenketten, an denen der String numbers getrennt werden soll. Reguläre Ausdrücke können Ihnen als Programmierer oft das Leben erleichtern, allerdings sind sie auch nicht immer leicht zusammenzusetzen. Wenn Sie mehr über reguläre Ausdrücke erfahren möchten, verweisen wir auf die offizielle Einführung zu regulären Ausdrücken in Java. Ebenfalls können Sie in der Java-Insel im entsprechenden Kapitel nachschlagen.