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??

2voto

Saket Punkte 44477

Sie können sie zunächst aufteilen mit String.split(",") und konvertieren dann den zurückgegebenen String array zu einer ArrayList mit Arrays.asList(array)

2voto

Aviroop Sanyal Punkte 11

In Java kann man das folgendermaßen machen

String catalogue_id = "A, B, C";
List<String> catalogueIdList = Arrays.asList(catalogue_id.split(", [ ]*"));

2voto

Julien Kronegg Punkte 4642

Diese Frage ist zwar alt und wurde schon mehrfach beantwortet, aber keine der Antworten ist in der Lage, alle der folgenden Fälle zu bewältigen:

  • "" -> leere Zeichenkette sollte auf leere Liste abgebildet werden
  • " a, b , c " -> alle Elemente sollten abgeschnitten werden, einschließlich des ersten und letzten Elements
  • ",," -> leere Elemente sollten entfernt werden

Daher verwende ich den folgenden Code (mit org.apache.commons.lang3.StringUtils z.B. https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.11 ):

StringUtils.isBlank(commaSeparatedEmailList) ?
            Collections.emptyList() :
            Stream.of(StringUtils.split(commaSeparatedEmailList, ','))
                    .map(String::trim)
                    .filter(StringUtils::isNotBlank)
                    .collect(Collectors.toList());

Die Verwendung eines einfachen Split-Ausdrucks hat einen Vorteil: Es wird kein regulärer Ausdruck verwendet, so dass die Leistung wahrscheinlich höher ist. Die commons-lang3 Bibliothek ist leichtgewichtig und sehr verbreitet.

Beachten Sie, dass die Implementierung davon ausgeht, dass Sie kein Listenelement haben, das ein Komma enthält (d.h. "a, 'b,c', d" wird geparst als ["a", "'b", "c'", "d"] nicht zu ["a", "b,c", "d"] ).

2voto

anoop ghildiyal Punkte 801

Dasselbe Ergebnis können Sie auch mit der Klasse Splitter erzielen.

var list = Splitter.on(",").splitToList(YourStringVariable)

(geschrieben in kotlin)

1voto

deepu kumar singh Punkte 309
List commaseperated = new ArrayList();
String mylist = "item1 , item2 , item3";
mylist = Arrays.asList(myStr.trim().split(" , "));

// enter code here

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