Teilen Sie einen String in Java

Teilen Sie einen String in Java

1. Einführung

Das Teilen vonStrings 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 - dieString-Klasse selbst bietet einesplit()-S-Methode -, die für die meisten Szenarien sehr praktisch und ausreichend ist. Es teilt einfach die angegebenenString basierend auf dem Trennzeichen auf und gibt ein Array vonStrings zurück.

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

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

Teilen wir durch ein Leerzeichen:

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 eineStringUtils-Klasse, die eine null-sicheresplit()-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 in Guava eine netteSplitterfließende API:

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

5. Teilen und Trimmen

Manchmal enthält ein bestimmtesString führende, nachfolgende oder zusätzliche Leerzeichen um das Trennzeichen. Lassen Sie uns sehen, wie wir die Eingabe aufteilen und die Ergebnisse auf einmal kürzen können.

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 Trennen und Zuschneiden mit Regex durchführen:

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

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

Wir können das gleiche Ergebnis erzielen, wenn wir die Funktionen von Java 8Streamverwenden:

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 basierendeStringUtils-Klasse von Apache oder die sauberen und flexiblen Guava-APIs verwenden.

Und wie immer ist der Code für den Artikelover on GitHub verfügbar.