Ich habe einen String mit einer unbekannten Länge, der ungefähr so aussieht
"dog, cat, bear, elephant, ..., giraffe"
Was wäre der optimale Weg, um diese Zeichenfolge durch Kommas zu teilen, damit jedes Wort ein Element einer ArrayList wird?
Beispielsweise
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.
Antworten:
Sie könnten dies tun:
Grundsätzlich
.split()
teilt die Methode die Zeichenfolge nach dem von Ihnen übergebenen Trennzeichen (in diesem Fall) auf und gibt ein Array von Zeichenfolgen zurück.Sie scheinen jedoch eher nach einer Liste von Zeichenfolgen als nach einem Array zu suchen, daher muss das Array mithilfe des
Arrays.asList()
Dienstprogramms in eine Liste umgewandelt werden . Genau wie zu Ihrer Information könnten Sie auch so etwas tun:In der Regel ist es jedoch besser, auf eine Schnittstelle als auf eine konkrete Implementierung zu programmieren. Daher würde ich die erste Option empfehlen.
quelle
str.split
Akzeptiert Regex, damit Siestr.split(",[ ]*");
Kommas und Leerzeichen nach Kommas entfernen können.ArrayList<String>
.Nun, Sie wollen Split , nicht wahr?
Wenn Sie zusätzlich Leerzeichen um Elemente entfernen möchten:
quelle
Arrays.asList()
Redewendung nicht kopieren .Sie können es teilen und ein Array erstellen und dann auf ein ähnliches Array zugreifen
Sie können gerne darauf zugreifen
oder mit Schleife
hoffe es wird dir helfen.
quelle
Eine kleine Verbesserung: Die obigen Lösungen entfernen keine führenden oder nachfolgenden Leerzeichen in der tatsächlichen Zeichenfolge. Es ist besser, Trim aufzurufen, bevor Sie Split aufrufen. An Stelle von,
verwenden
quelle
("\\s*,\\s*")
, da(",");
dies nur zu denselben Ergebnissen führt.trim(" string, with , space ")
wird das sein"string, with , space"
."dog, cat, bear, elephant, giraffe"
dann keine Notwendigkeittrim()
und in Ihrem Fall, wenn Verwendung,trim()
dann"string,with,space"
"string, with , space"
trim()
entfernt alle Leerzeichen, nicht nur das linke und rechte Leerzeichen der Zeichenfolge" string, with , space ".trim()
zurückkehrt"string, with , space"
. Wie javadoc sagt: Gibt eine Kopie der Zeichenfolge zurück, wobei führende und nachfolgende Leerzeichen weggelassen werden. Sie liegen falsch und @ user872858 ist richtig.Zuerst können Sie Namen wie diese teilen
Zugang zu Ihren Tieren
Außerdem möchten Sie Leerzeichen und Kommas um Tiernamen entfernen
quelle
Der Vollständigkeit halber würden Sie mit der Guava- Bibliothek Folgendes tun:
Splitter.on(",").split(“dog,cat,fox”)
Ein anderes Beispiel:
Splitter.split()
Gibt eine Iterable zurück. Wenn Sie also eine Liste benötigen, wickeln Sie sieLists.newArrayList()
wie oben beschrieben ein. Ansonsten einfach mit dem Iterable gehen, zum Beispiel:Beachten Sie, wie
trimResults()
alle Ihre Trimmanforderungen erfüllt werden , ohne dass Regexe für Eckfälle wie bei angepasst werden müssenString.split()
.Wenn Ihr Projekt bereits Guava verwendet, sollte dies Ihre bevorzugte Lösung sein. Weitere Konfigurationsoptionen finden Sie in der Splitter-Dokumentation im Guava-Benutzerhandbuch oder in den Javadocs .
quelle
Kann versuchen, damit hat bei mir funktioniert
oder aber
quelle
In build.gradle füge Guave hinzu
und dann
genießen :)
quelle
Entfernen Sie alle Leerzeichen und erstellen Sie eine Liste mit fester Größe oder unveränderlicher Größe (siehe
asList
API-Dokumente ).Es ist auch möglich zu verwenden,
replaceAll(\\s+", "")
aber die maximale Effizienz hängt vom Anwendungsfall ab. (Siehe @ GurselKoca- Antwort zum Entfernen von Leerzeichen aus Zeichenfolgen in Java. )quelle
Sie können so etwas verwenden:
Außerdem würden Sie die Bibliotheken einschließen:
quelle
Benutze das :
quelle
In Kotlin,
wo
stringArray
istList<String>
undcommasString
istString
mit Kommas und Leerzeichenquelle
Dies ist eine einfache Möglichkeit, Zeichenfolgen durch Komma zu teilen.
quelle
Es gibt eine Funktion namens
replaceAll()
, die alle Leerzeichen entfernen kann, indem sie durch beliebige ersetzt werden. Als Beispielwerde dir geben:
quelle