J'ai une chaîne comme ceci: String attributes = " foo boo, faa baa, fii bii,"
Je veux obtenir un résultat comme celui-ci:
String[] result = {"foo boo", "faa baa", "fii bii"};
Donc, mon problème est de savoir comment faire pour scinder et couper en un coup je me suis déjà séparé:
String[] result = attributes.split(",");
Mais la spaces
reste dans le résultat:
String[] result = {" foo boo", " faa baa", " fii bii"};
^ ^ ^
Je sais que nous pouvons faire une boucle et rendre trim
pour chaque, mais je veux le faire en coup.
Utilisez l'expression régulière \s*,\s*
pour le fractionnement.
String result[] = attributes.split("\\s*,\\s*");
Pour les espaces blancs initiaux et suivants
La solution précédente laisse encore des espaces vides. Donc, si nous en attendons un, nous pouvons utiliser la solution suivante pour le supprimer:
String result[] = attributes.trim().split("\\s*,\\s*");
En utilisant Java 8, vous pouvez le faire comme ceci en une seule ligne
String[] result = Arrays.stream(attributes.split(",")).map(String::trim).toArray(String[]::new);
S'il n'y a pas de texte entre les virgules, l'expression suivante ne créera pas d'éléments vides:
String result[] = attributes.trim().split("\\s*,+\\s*,*\\s*");
String result[] = attributes.trim().split("\\s*,[,\\s]*");
précédemment posté ici: https://blog.oio.de/2012/08/23/split-comma-separated-strings-in-Java/
Et si vous sépariez par virgule et espace?
String result[] = attributes.split(",\\s");
créez votre propre fonction personnalisée
private static String[] split_and_trim_in_one_shot(String string){
String[] result = string.split(",");
int array_length = result.length;
for(int i =0; i < array_length ; i++){
result[i]=result[i].trim();
}
return result;
Surcharge avec une considération pour le délimiteur personnalisé
private static String[] split_and_trim_in_one_shot(String string, String delimiter){
String[] result = string.split(delimiter);
int array_length = result.length;
for(int i =0; i < array_length ; i++){
result[i]=result[i].trim();
}
return result;