String explode in Java: split

Um einen String in ein Array oder eine Liste umzuwandeln, hat Java eine einfache Methode am String Objekt: split(String regex). Eine Anwendug könnte z.B. das verarbeiten einer Zeile eines einfachen CSV-Files sein.

Diese Methode liefert für ein bestimmtes Trennpattern ein Array aller gefundenen Sub-Strings zurück. Im Beispiel wird eine Liste von Bieren, jeweils mit Komma getrennt, in ein Array eingelesen. Trennzeichen ist in diesem Fall das Kommazeichen ",":

String beers = "Raschhofer, Guinness,Eggenberg";
String[] beerArray = beers.split(",");
// Ergebnis: ["Raschhofer", " Guinness", "Eggenberg"]

Ein Problem hier ist, dass das Leerzeichen vor "Guinness" bestehen bleibt. Die Variable beerArray enthält nun die Werte "Raschhofer", " Guinnes" und "Eggenberg".

Um dies zu verhindern, können wir statt dem einzelnen Trennzeichen auch ein Regex-Pattern angeben In diesem Fall "Komma und optional alle vorstehenden und nachfolgenden Leerzeichen":

String[] beerArray = beers.split("\\s*,\\s*");

Splitter mit Google Guava

Eine sehr elegante Möglichkeit einen String zu trennen bietet die Google-Library Guava. Sie bietet ein "fluent Interface" mit dem diverse features hinzugefügt werden können:

List<String> beerList = Splitter.on(",")
    .trimResults()
    .omitEmptyStrings()
    .splitToList(beers);

Im obigen Beispiel wird zuerst mit on(",") der Trennstring festgelegt. Die Methode trimResults() bestimmt, dass alle Whitespace-Zeichen vor und nach den Elementen gelöscht werden und omitEmptyStrings() legt fest, dass leere Elemente nicht berücksichtigt werden. Mit der Methode splitToList() wird das Statement abgeschlossen und eine Liste mit den Elementen erzeugt.


Ähnliche Artikel