Teilen Sie einen String in Java

1. Einleitung

Das Teilen von Saiten ist eine sehr häufige Operation. Dieses kurze Tutorial konzentriert sich auf einige der APIs, mit denen wir dies einfach in Java tun können.

2. String.split ()

Beginnen wir mit der Kernbibliothek - die String- Klasse selbst bietet eine split () -Methode -, die für die meisten Szenarien sehr praktisch und ausreichend ist. Es teilt einfach den angegebenen String basierend auf dem Trennzeichen auf und gibt ein Array von Strings zurück .

Schauen wir uns einige Beispiele an. Wir beginnen mit einem Komma:

String[] splitted = "peter,james,thomas".split(",");

Lassen Sie uns durch ein Leerzeichen teilen:

String[] splitted = "car jeep scooter".split(" ");

Teilen wir auch durch einen Punkt:

String[] splitted = "192.168.1.178".split("\\.")

Lassen Sie uns jetzt durch mehrere Zeichen teilen - ein Komma, ein Leerzeichen und einen Bindestrich durch Regex:

String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));

3. StringUtils.split ()

Das allgemeine lang-Paket von Apache enthält eine StringUtils- Klasse, die eine null-sichere split () -Methode enthält, die unter Verwendung von Leerzeichen als Standardtrennzeichen aufgeteilt wird:

String[] splitted = StringUtils.split("car jeep scooter");

Außerdem werden zusätzliche Leerzeichen ignoriert:

String[] splitted = StringUtils.split("car jeep scooter");

4. Splitter.split ()

Schließlich gibt es auch eine schöne Splitter- API in Guava:

List resultList = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList("car,jeep,, scooter"); 

5. Teilen und Trimmen

Manchmal enthält eine bestimmte Zeichenfolge führende, nachfolgende oder zusätzliche Leerzeichen um das Trennzeichen. Mal sehen, wie wir es schaffen, die Eingabe aufzuteilen und die Ergebnisse auf einmal zu kürzen.

Nehmen wir an, wir haben dies als Eingabe:

String input = " car , jeep, scooter ";

Um zusätzliche Leerzeichen vor und / oder nach dem Trennzeichen zu entfernen, können Sie das Teilen und Trimmen mit Regex durchführen:

String[] splitted = input.trim().split("\\s*,\\s*");

Hier entfernt die Methode trim () führende und nachfolgende Leerzeichen in der Eingabezeichenfolge, und der reguläre Ausdruck selbst behandelt die zusätzlichen Leerzeichen um das Trennzeichen.

Mit den Java 8 Stream- Funktionen können wir dasselbe Ergebnis erzielen :

String[] splitted = Arrays.stream(input.split(",")) .map(String::trim) .toArray(String[]::new);

6. Fazit

String.split () ist im Allgemeinen ausreichend. Für komplexere Fälle können wir jedoch die auf Commons-Lang basierende StringUtils- Klasse von Apache oder die sauberen und flexiblen Guava-APIs verwenden.

Und wie immer ist der Code für den Artikel auf GitHub verfügbar.