it-swarm.com.de

Wie teilt man eine durch Kommas getrennte Zeichenfolge auf?

Ich habe einen String mit unbekannter Länge, der ungefähr so ​​aussieht

"dog, cat, bear, elephant, ..., giraffe"

Was wäre der beste Weg, um diese Zeichenfolge an den Kommas zu unterteilen, damit jedes Wort zu einem Element einer ArrayList werden könnte?

Zum Beispiel

List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.
173
James Fazio

Sie könnten das tun:

String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));

Grundsätzlich teilt die .split() -Methode den String nach (in diesem Fall) dem übergebenen Trennzeichen auf und gibt ein Array von Strings zurück. 

Sie befinden sich jedoch scheinbar hinter einer Liste von Strings und nicht nach einem Array. Das Array muss daher mithilfe des Dienstprogramms Arrays.asList() in eine Liste umgewandelt werden. Als FYI könnten Sie auch so etwas tun:

String str = "...";
ArrayList<String> elephantList = (ArrayList<String>)Arrays.asList(str.split(","));

In der Regel ist es jedoch besser, auf eine Schnittstelle zu programmieren als auf eine konkrete Implementierung. Daher würde ich die erste Option empfehlen.

297
npinti

Nun, Sie wollen teilen , richtig?

String animals = "dog, cat, bear, elephant, giraffe";

String[] animalsArray = animals.split(",");

Wenn Sie zusätzlich Leerzeichen um Elemente entfernen möchten:

String[] animalsArray = animals.split("\\s*,\\s*");
141

Sie können es aufteilen, ein Array erstellen und dann wie ein Array darauf zugreifen

String names = "prappo,prince";
String[] namesList = names.split(",");

sie können gerne zugreifen 

String name1 = names[0];
String name2 = names[1];

oder unter Verwendung einer Schleife 

for(String name : namesList){
System.out.println(name);
}

hoffe es wird dir helfen.

19
Prappo Prince

Eine kleine Verbesserung: Bei obigen Lösungen werden führende oder nachgestellte Leerzeichen im eigentlichen String nicht entfernt. Es ist besser, trim vor dem Aufruf von split ..__ anzurufen.

 String[] animalsArray = animals.split("\\s*,\\s*");

benutzen

 String[] animalsArray = animals.trim().split("\\s*,\\s*");
17
user872858

Zuerst können Sie Namen wie folgt teilen

String animals = "dog, cat, bear, elephant,giraffe";

String animals_list[] = animals.split(",");

um auf Ihre Tiere zuzugreifen 

String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];

Außerdem möchten Sie Leerzeichen und Kommas um Tiernamen entfernen

String animals_list[] = animals.split("\\s*,\\s*");
3
sam

Der Vollständigkeit halber würden Sie mit der Bibliothek Guava Folgendes tun: Splitter.on(",").split(“dog,cat,fox”)

Ein anderes Beispiel:

String animals = "dog,cat, bear,elephant , giraffe ,  zebra  ,walrus";
List<String> l = Lists.newArrayList(Splitter.on(",").trimResults().split(animals));
// -> [dog, cat, bear, elephant, giraffe, zebra, walrus]

Splitter.split() gibt eine Iterable zurück, wenn Sie also eine Liste benötigen, wickeln Sie sie wie oben beschrieben in Lists.newArrayList() ein. Ansonsten geh einfach mit dem Iterable zum Beispiel: 

for (String animal : Splitter.on(",").trimResults().split(animals)) {
    // ...
}

Beachten Sie, wie trimResults() alle Ihre Trimmbedürfnisse erledigt, ohne Regeln für Eckfälle anpassen wie bei String.split().

Wenn Ihr Projekt bereits Guava verwendet, sollte dies Ihre bevorzugte Lösung sein. Weitere Informationen zu den Konfigurationsoptionen finden Sie in der Dokumentation zum Splitter in Guava-Benutzerhandbuch oder unter javadocs .

3
Jonik

Kann mit dem für mich gearbeitet versuchen 

 sg = sg.replaceAll(", $", "");

oder aber 

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }
2
Tarit Ray

Entfernen Sie alle Leerzeichen und erstellen Sie eine feste oder unveränderliche Liste (Siehe asListAPI-Dokumente ).

final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]

Es ist möglich, auch replaceAll(\\s+", "") zu verwenden, die maximale Effizienz hängt jedoch vom Anwendungsfall ab. (siehe @GurselKoca answer to Entfernen von Leerzeichen aus Zeichenfolgen in Java)

0
sdc

In Kotlin

val stringArray = commasString.replace(", ", ",").split(",")

dabei ist stringArrayList<String> und commasStringString mit Kommas und Leerzeichen

0

in build.gradle fügen Sie Guava hinzu 

    compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'

und dann

    public static List<String> splitByComma(String str) {
    Iterable<String> split = Splitter.on(",")
            .omitEmptyStrings()
            .trimResults()
            .split(str);
    return Lists.newArrayList(split);
    }

    public static String joinWithComma(Set<String> words) {
        return Joiner.on(", ").skipNulls().join(words);
    }

genießen :)

0

Benutze das :

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
0

Sie können so etwas verwenden: 

String animals = "dog, cat, bear, elephant, giraffe";

List<String> animalList = Arrays.asList(animals.split(","));

Außerdem würden Sie die Bibliotheken einschließen:

import Java.util.ArrayList;
import Java.util.Arrays; 
import Java.util.List;
0
Diego Cortes