654 Stimmen

Wie konvertiert man einen kommagetrennten String in eine Liste?

Gibt es eine eingebaute Methode in Java, mit der wir kommaseparierte Strings in einen Container (z. B. Array, Liste oder Vektor) umwandeln können? Oder muss ich dafür eigenen Code schreiben?

String commaSeparated = "item1 , item2 , item3";
List<String> items = //method that converts above string into list??

8voto

Brad Parks Punkte 59613

Sie können Guava verwenden, um die Zeichenkette aufzuteilen und in eine ArrayList zu konvertieren. Dies funktioniert auch mit einer leeren Zeichenkette und gibt eine leere Liste zurück.

import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

String commaSeparated = "item1 , item2 , item3";

// Split string into list, trimming each item and removing empty items
ArrayList<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(commaSeparated));
System.out.println(list);

list.add("another item");
System.out.println(list);

gibt das Folgende aus:

[item1, item2, item3]
[item1, item2, item3, another item]

Sie können auch den folgenden Ansatz ohne Guava verwenden:

  public static List<String> getStringAsList(String input) {
    if (input == null || input.trim().length() == 0) {
      return Collections.emptyList();
    }

    final String separators = "[;:,-]";
    var result =
        Splitter.on(CharMatcher.anyOf(separators))
            .trimResults()
            .omitEmptyStrings()
            .splitToList(input);

    return result;
  }

6voto

ognjenkl Punkte 904

Java 9 führte List.of() ein:

String commaSeparated = "item1 , item2 , item3";
List<String> items = List.of(commaSeparated.split(" , "));

5voto

akhil_mittal Punkte 20953

Es gibt viele Möglichkeiten, dieses Problem mit Hilfe von Streams in Java 8 aber IMO sind die folgenden Einzeiler einfach zu verstehen:

String  commaSeparated = "item1 , item2 , item3";
List<String> result1 = Arrays.stream(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());
List<String> result2 = Stream.of(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());

4voto

Filippo Lauria Punkte 1892

Ein Beispiel mit Collections .

import java.util.Collections;
 ...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\\s*,\\s*"));
 ...

3voto

sivareddy963 Punkte 143

In Groovy können Sie die Methode tokenize(Character Token) verwenden:

list = str.tokenize(',')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X