Comment séparer une chaîne séparée par une virgule?

j'ai une chaîne avec une longueur inconnue qui ressemble à quelque chose comme ça

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

quelle serait la meilleure façon de diviser cette chaîne à la virgule pour que chaque mot puisse devenir un élément D'un ArrayList?

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.
162
demandé sur Jonik 2012-05-17 11:43:41

12 réponses

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 retournera un tableau de chaînes.

cependant, vous semblez être après une liste de chaînes plutôt qu'un tableau, donc le tableau doit être transformé en une liste en utilisant l'utilitaire Arrays.asList() . Pour ton information, tu pourrais aussi faire quelque chose comme so:

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

mais il est généralement préférable de programmer vers une interface plutôt que vers une implémentation concrète, donc je recommande la 1ère option.

272
répondu npinti 2018-06-27 07:55:01

Eh bien, vous voulez split , c'est ça?

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

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

si vous voulez en outre se débarrasser des espaces blancs autour des éléments:

String[] animalsArray = animals.split("\s*,\s*");
133
répondu Tomasz Nurkiewicz 2012-05-17 07:45:25

une petite amélioration: les solutions ci-dessus ne supprimera pas les espaces de tête ou de fuite 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*");

utiliser

 String[] animalsArray = animals.trim().split("\s*,\s*");
17
répondu user872858 2013-12-11 12:17:53

vous pouvez le diviser et faire un tableau alors accéder comme le 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);
}

j'espère que ça vous aidera .

16
répondu Prappo Prince 2018-07-27 11:19:12

vous pouvez d'abord partager des noms comme celui-ci

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

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

pour 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 la virgule autour des noms d'animaux

String animals_list[] = animals.split("\s*,\s*");
3
répondu hash 2015-04-30 09:21:55

pour l'exhaustivité, en utilisant le Guava bibliothèque, vous feriez: Splitter.on(",").split(“dog,cat,fox”)

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() retourne un itérable, donc si vous avez besoin d'une liste, enveloppez-la dans Lists.newArrayList() comme ci-dessus. Sinon, il suffit d'aller avec le itérable, par exemple:

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

Note comment trimResults() gère tous vos besoins de garniture sans avoir à tweak regexes pour le coin cas , comme avec String.split() .

si votre projet utilise déjà la goyave, cela devrait être votre solution préférée. Voir la documentation de Splitter dans Guava User Guide ou le javadocs pour plus d'options de configuration.

2
répondu Jonik 2017-05-23 12:17:58

peut essayer avec ce travaillé pour moi

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

ou encore

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }
2
répondu Tarit Ray 2017-03-14 13:43:22

supprimer tous les espaces blancs et créer une fixe-size ou immuable Liste (Voir asList API docs )

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 possible d'utiliser des replaceAll(\s+", "") mais une efficacité maximale dépend du cas d'utilisation. (voir @GurselKoca réponse à en Supprimant les espaces de chaînes de caractères en Java )

0
répondu sdc 2017-05-23 12:17:58

Vous pouvez utiliser quelque chose comme ceci:

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

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

aussi, vous incluriez les libs:

import java.util.ArrayList;
import java.util.Arrays; 
import java.util.List;
0
répondu Diego Cortes 2017-02-20 21:36:54

utilisez ceci:

        List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
0
répondu Abhishek Sengupta 2018-08-30 11:53:33

Dans Kotlin,

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

stringArray est List<String> et commasString est String avec des virgules et des espaces

0
répondu KishanSolanki124 2018-09-25 05:49:33

il y a une fonction appelée replaceAll() qui peut supprimer tous les espaces blancs en les remplaçant par ce que vous voulez. À titre d'exemple

String str="  15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);

vous donnera:

First:15.94, Second:16.01
-1
répondu Mawhrin-Skel 2015-05-16 00:26:52