J'ai une chaîne d'une longueur inconnue qui ressemble à ceci
"dog, cat, bear, elephant, ..., giraffe"
Quel serait le moyen optimal de diviser cette chaîne par des virgules pour que chaque mot puisse devenir un élément d'une liste de tableaux?
Par exemple
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.
Vous pourriez faire ceci:
String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));
Fondamentalement, la méthode .split()
divisera la chaîne en fonction du délimiteur (dans ce cas) que vous passez et renverra un tableau de chaînes.
Cependant, vous semblez vouloir une liste de chaînes plutôt qu'un tableau, vous devez donc transformer le tableau en liste à l'aide de l'utilitaire Arrays.asList()
. En tant que FYI, vous pouvez également faire quelque chose comme ceci:
String str = "...";
ArrayList<String> elephantList = (ArrayList<String>)Arrays.asList(str.split(","));
Mais il est généralement préférable de programmer pour une interface plutôt que pour une implémentation concrète réelle, je recommanderais donc la première option.
Eh bien, vous voulez divisez , non?
String animals = "dog, cat, bear, elephant, giraffe";
String[] animalsArray = animals.split(",");
Si vous souhaitez également supprimer les espaces entre les éléments:
String[] animalsArray = animals.split("\\s*,\\s*");
Vous pouvez le scinder et faire un tableau puis accéder comme tableau
String names = "prappo,prince";
String[] namesList = names.split(",");
vous pouvez accéder comme
String name1 = names[0];
String name2 = names[1];
ou en utilisant la boucle
for(String name : namesList){
System.out.println(name);
}
espérons que cela vous aidera.
Une petite amélioration: les solutions ci-dessus ne suppriment pas les espaces de début ou de fin dans la chaîne réelle. Il vaut mieux appeler trim avant d'appeler split . Au lieu de cela,
String[] animalsArray = animals.split("\\s*,\\s*");
utilisation
String[] animalsArray = animals.trim().split("\\s*,\\s*");
D'abord, vous pouvez diviser des noms comme celui-ci
String animals = "dog, cat, bear, elephant,giraffe";
String animals_list[] = animals.split(",");
accéder à vos animaux
String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];
Et aussi vous voulez supprimer les espaces blancs et les virgules autour des noms d'animaux
String animals_list[] = animals.split("\\s*,\\s*");
Pour être complet, en utilisant la bibliothèque Guava , vous feriez: Splitter.on(",").split(“dog,cat,fox”)
Un autre exemple:
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()
renvoie un Iterable, donc si vous avez besoin d’une liste, placez-la dans Lists.newArrayList()
comme ci-dessus. Sinon, allez simplement avec l'Iterable, par exemple:
for (String animal : Splitter.on(",").trimResults().split(animals)) {
// ...
}
Notez que trimResults()
répond à tous vos besoins de découpage sans avoir à Tweak regexes pour les angles , comme avec String.split()
.
Si votre projet utilise déjà Guava, cela devrait être votre solution préférée. Consultez la documentation de Splitter dans Guava User Guide ou javadocs pour plus d'options de configuration.
Peut essayer avec cela a fonctionné pour moi
sg = sg.replaceAll(", $", "");
ou sinon
if (sg.endsWith(",")) {
sg = sg.substring(0, sg.length() - 1);
}
Supprimez tous les espaces et créez une liste à taille fixe ou immuable (voir asList
documents d'API )
final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]
Il est également possible d'utiliser replaceAll(\\s+", "")
mais l'efficacité maximale dépend du cas d'utilisation. (voir @GurselKoca réponse à Suppression des espaces des chaînes en Java)
À Kotlin,
val stringArray = commasString.replace(", ", ",").split(",")
où stringArray
est List<String>
et commasString
est String
avec des virgules et des espaces
dans build.gradle, ajoutez Guava
compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'
et alors
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);
}
prendre plaisir :)
Utilisez ceci :
List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
Vous pouvez utiliser quelque chose comme ceci:
String animals = "dog, cat, bear, elephant, giraffe";
List<String> animalList = Arrays.asList(animals.split(","));
En outre, vous incluez les bibliothèques:
import Java.util.ArrayList;
import Java.util.Arrays;
import Java.util.List;