Je me demandais simplement quel serait le meilleur moyen de supprimer l’espace blanc de tous les éléments d’une liste.
Par exemple, si j'avais String [] array = {" String", "Tom Selleck "," Fish "}
Comment pourrais-je obtenir tous les éléments en tant que {"String","Tom Selleck","Fish"}
Merci!
Essaye ça:
String[] trimmedArray = new String[array.length];
for (int i = 0; i < array.length; i++)
trimmedArray[i] = array[i].trim();
Maintenant, trimmedArray
contient les mêmes chaînes que array
, mais sans les espaces de début et de fin. Vous pouvez également écrire ceci pour modifier les chaînes sur place dans le même tableau:
for (int i = 0; i < array.length; i++)
array[i] = array[i].trim();
Une autre option Java 8 lambda:
String[] array2 = Arrays.stream(array).map(String::trim).toArray(String[]::new);
Et la version laide mais optimisée sans nouvelle création de tableau
Arrays.stream(array).map(String::trim).toArray(unused -> array);
Le "tableau" d'origine est modifié.
Ajoutez commons-lang3-3.1.jar dans le chemin de génération de votre application . Utilisez l'extrait de code ci-dessous pour supprimer le tableau String.
String array = {" String", "Tom Selleck "," Fish "};
array = StringUtils.stripAll(array);
En Java 8, Arrays.parallelSetAll
semble prêt à être utilisé à cette fin:
import Java.util.Arrays;
Arrays.parallelSetAll(array, (i) -> array[i].trim());
Cela modifiera le tableau d'origine en place, en remplaçant chaque élément par le résultat de l'expression lambda.
Je sais que c’est un très vieux billet, mais depuis Java 1.8, il existe un moyen plus agréable de couper chaque chaîne d’un tableau.
Solution Java 8 Lamda Expression:
List<String> temp = new ArrayList<>(Arrays.asList(yourArray));
temp.forEach(e -> {temp.set((temp.indexOf(e), e.trim()});
yourArray = temp.toArray(new String[temp.size()]);
avec cette solution, vous n'avez pas à créer un nouveau tableau.
Comme dans la solution d'Óscar López
Vous pouvez simplement parcourir les éléments du tableau et appeler array[i].trim()
sur chaque élément
Ne sachant pas comment l'OP a eu {" String", "Tom Selleck "," Fish "}
dans un tableau en premier lieu (il y a 6 ans), j'ai pensé partager ce avec quoi je me suis retrouvé.
Mon tableau est le résultat de l'utilisation de split sur une chaîne pouvant contenir des espaces supplémentaires autour des délimiteurs. Ma solution consistait à régler ce problème au moment de la scission. Mon code suit. Après les tests, j'ai placé splitWithTrim () dans la classe Utils de mon projet. Il gère mon cas d'utilisation; vous voudrez peut-être examiner quels types de chaînes et de délimiteurs vous pourriez rencontrer si vous décidez de les utiliser.
public class Test {
public static void main(String[] args) {
test(" abc def ghi jkl ", " ");
test(" abc; def ;ghi ; jkl; ", ";");
}
public static void test(String str, String splitOn) {
System.out.println("Splitting \"" + str + "\" on \"" + splitOn + "\"");
String[] parts = splitWithTrim(str, splitOn);
for (String part : parts) {
System.out.println("(" + part + ")");
}
}
public static String[] splitWithTrim(String str, String splitOn) {
if (splitOn.equals(" ")) {
return str.trim().split(" +");
} else {
return str.trim().split(" *" + splitOn + " *");
}
}
}
La sortie de l'exécution de l'application de test est:
Splitting " abc def ghi jkl " on " "
(abc)
(def)
(ghi)
(jkl)
Splitting " abc; def ;ghi ; jkl; " on ";"
(abc)
(def)
(ghi)
(jkl)