Comment supprimer les espaces blancs en double (y compris les tabulations, les retours à la ligne, les espaces, etc.) dans une chaîne en utilisant Java?
Comment supprimer les espaces blancs en double (y compris les tabulations, les retours à la ligne, les espaces, etc.) dans une chaîne en utilisant Java?
Réponses:
Comme ça:
yourString = yourString.replaceAll("\\s+", " ");
Par exemple
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
les sorties
lorem ipsum dolor sit.
Qu'est-ce \s+
que cela veut dire?
\s+
est une expression régulière. \s
correspond à un espace, une tabulation, une nouvelle ligne, un retour chariot, un saut de page ou une tabulation verticale, et +
dit "un ou plusieurs de ceux-ci". Ainsi, le code ci-dessus réduira toutes les "sous-chaînes d'espaces" de plus d'un caractère, avec un seul caractère d'espace.
Source: Java: suppression des espaces blancs en double dans les chaînes
\s+
mais que signifie 2 contre-oblique \\?
"\\"
représente la chaîne constituée d'une seule barre oblique inverse. Donc, pour \s+
vous représenter, écrivez "\\s+"
.
Vous pouvez utiliser l'expression régulière
(\s)\1
et
remplacez-le par $1
.
Code Java:
str = str.replaceAll("(\\s)\\1","$1");
Si l'entrée est, "foo\t\tbar "
vous obtiendrez "foo\tbar "
comme sortie
Mais si l'entrée est, "foo\t bar"
elle restera inchangée car elle n'a pas de caractères blancs consécutifs.
Si vous traitez tous les caractères d'espacement (espace, tabulation verticale, tabulation horizontale, retour chariot, saut de page, nouvelle ligne) comme un espace, vous pouvez utiliser l'expression régulière suivante pour remplacer n'importe quel nombre d'espace blanc consécutif par un seul espace:
str = str.replaceAll("\\s+"," ");
Mais si vous souhaitez remplacer deux espaces blancs consécutifs par un seul espace, vous devez faire:
str = str.replaceAll("\\s{2}"," ");
Essayez ceci - vous devez import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(string);
boolean check = matcher.find();
String str = matcher.replaceAll(" ");
Où se string
trouve votre chaîne sur laquelle vous devez supprimer les espaces blancs en double
salut le moyen le plus rapide (mais pas le plus joli) que j'ai trouvé est
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
cela fonctionne assez vite sur Android contrairement à une regex
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
Bien qu'il soit trop tard, j'ai trouvé une meilleure solution (qui fonctionne pour moi) qui remplacera tous les espaces blancs consécutifs de même type par un espace blanc de ce type. C'est:
Hello!\n\n\nMy World
sera
Hello!\nMy World
Notez qu'il y a encore des espaces blancs au début et à la fin. Ma solution complète est donc:
str = str.trim().replaceAll("(\\s)+", "$1"));
Ici, trim()
remplace toutes les chaînes d'espace blanc de début et de fin par "". (\\s)
est pour capturer \\s
(c'est-à-dire des espaces blancs tels que '', '\ n', '\ t') dans le groupe # 1 . +
signe correspond à 1 ou plusieurs jetons précédents. Il (\\s)+
peut donc s'agir de caractères consécutifs (1 ou plus) parmi n'importe quel caractère d'espacement («», «\ n» ou «\ t»). $1
sert à remplacer les chaînes correspondantes par la chaîne du groupe n ° 1 (qui ne contient qu'un seul caractère d'espace blanc) du type correspondant (c'est-à-dire le caractère d'espace blanc unique qui correspond). La solution ci-dessus changera comme ceci:
Hello!\n\n\nMy World
sera
Hello!\nMy World
Je n'ai pas trouvé ma solution ci-dessus ici, je l'ai donc postée.
Si vous souhaitez vous débarrasser de tous les espaces superflus de début et de fin, vous voulez faire quelque chose comme ceci:
// \\A = Start of input boundary
// \\z = End of input boundary
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
Ensuite, vous pouvez supprimer les doublons en utilisant les autres stratégies répertoriées ici:
string = string.replaceAll("\\s+"," ");
Cela peut être possible en trois étapes: