Ik heb een string met een onbekende lengte die er ongeveer zo uitziet
"dog, cat, bear, elephant, ..., giraffe"
Wat zou de optimale manier zijn om deze tekenreeks bij de komma’s te verdelen, zodat elk woord een element van een ArrayList zou kunnen worden?
Bijvoorbeeld
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.
Antwoord 1, autoriteit 100%
Je zou dit kunnen doen:
String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));
In feite de .split()
methode zal de string splitsen volgens (in dit geval) scheidingsteken dat je doorgeeft en zal een array van strings teruggeven.
U lijkt echter op zoek te zijn naar een lijst met tekenreeksen in plaats van een array, dus de array moet worden omgezet in een lijst met behulp van de Arrays.asList()
hulpprogramma. Net als een FYI zou je ook zoiets kunnen doen:
String str = "...";
ArrayList<String> elephantList = new ArrayList<>(Arrays.asList(str.split(","));
Maar het is meestal beter om naar een interface te programmeren in plaats van naar een daadwerkelijke concrete implementatie, dus ik zou de eerste optie aanraden.
Antwoord 2, autoriteit 44%
Nou, je wilt splitsen, toch?
String animals = "dog, cat, bear, elephant, giraffe";
String[] animalsArray = animals.split(",");
Als je bovendien witruimtes rond items wilt verwijderen:
String[] animalsArray = animals.split("\\s*,\\s*");
Antwoord 3, autoriteit 9%
Je kunt het splitsen en een array maken en vervolgens toegang krijgen als array
String names = "prappo,prince";
String[] namesList = names.split(",");
je hebt toegang tot
String name1 = namesList [0];
String name2 = namesList [1];
of met lus
for(String name : namesList){
System.out.println(name);
}
ik hoop dat het je zal helpen.
Antwoord 4, autoriteit 5%
Een kleine verbetering: bovenstaande oplossingen zullen geen voorloop- of volgspaties in de eigenlijke string verwijderen. Het is beter om trim te bellen voordat je split belt.
In plaats daarvan,
String[] animalsArray = animals.split("\\s*,\\s*");
gebruik
String[] animalsArray = animals.trim().split("\\s*,\\s*");
Antwoord 5
Eerst kun je namen op deze manier splitsen
String animals = "dog, cat, bear, elephant,giraffe";
String animals_list[] = animals.split(",");
om toegang te krijgen tot uw dieren
String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];
En u wilt ook spaties en komma’s rond dierennamen verwijderen
String animals_list[] = animals.split("\\s*,\\s*");
Antwoord 6
Voor de volledigheid: gebruik de bibliotheek Guava: Splitter.on(",").split(“dog,cat,fox”)
Nog een voorbeeld:
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()
retourneert een Iterable, dus als je een lijst nodig hebt, verpak deze dan in Lists.newArrayList()
zoals hierboven. Ga anders gewoon met de Iterable, bijvoorbeeld:
for (String animal : Splitter.on(",").trimResults().split(animals)) {
// ...
}
Merk op hoe trimResults()
al uw trimbehoeften afhandelt zonder dat u regexen voor hoekgevallen hoeft te tweaken, zoals bij String.split()
.
Als uw project al Guava gebruikt, zou dit uw voorkeursoplossing moeten zijn. Zie de Splitter-documentatie in de Guava-gebruikershandleidingof de javadocsvoor meer configuratie-opties.
Antwoord 7
Kan proberen hiermee werkte voor mij
sg = sg.replaceAll(", $", "");
of anders
if (sg.endsWith(",")) {
sg = sg.substring(0, sg.length() - 1);
}
Antwoord 8
voeg in build.gradle Guava toe
compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'
en dan
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);
}
genieten 🙂
Antwoord 9
Verwijder alle spaties en maak een vasteof onveranderlijkelijst (zie asList
API-documenten)
final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]
Het is mogelijk om ook replaceAll(\\s+", "")
te gebruiken, maar de maximale efficiëntie hangt af van de gebruikssituatie (zie @GurselKoca antwoordop Witruimte verwijderen uit strings in Java)
Antwoord 10
Je kunt zoiets als dit gebruiken:
String animals = "dog, cat, bear, elephant, giraffe";
List<String> animalList = Arrays.asList(animals.split(","));
U zou ook de bibliotheken opnemen:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Antwoord 11
Gebruik dit:
List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
Antwoord 12
In Kotlin,
val stringArray = commasString.replace(", ", ",").split(",")
waar stringArray
List<String>
is en commasString
String
met komma’s en spaties
Antwoord 13
Dit is een makkelijke manier om een tekenreeks per komma te splitsen,
import java.util.*;
public class SeparatedByComma{
public static void main(String []args){
String listOfStates = "Hasalak, Mahiyanganaya, Dambarawa, Colombo";
List<String> stateList = Arrays.asList(listOfStates.split("\\,"));
System.out.println(stateList);
}
}
Antwoord 14
Er is een functie genaamd replaceAll()
die alle spaties kan verwijderen door ze te vervangen door wat je maar wilt. Als voorbeeld
String str=" 15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);
geeft je:
First:15.94, Second:16.01