147 votes

Comment supprimer les espaces blancs en double dans une chaîne de caractères en utilisant Java ?

Comment supprimer les espaces blancs en double (y compris les tabulations, les nouvelles lignes, les espaces, etc...) dans une chaîne de caractères en utilisant Java ?

377voto

aioobe Points 158466

Comme ça :

yourString = yourString.replaceAll("\\s+", " ");

Par exemple

System.out.println("lorem  ipsum   dolor \n sit.".replaceAll("\\s+", " "));

sorties

lorem ipsum dolor sit.

Qu'est-ce que cela \s+ C'est-à-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'espacement" de plus d'un caractère, avec un seul caractère d'espacement.

23voto

codaddict Points 154968

Vous pouvez utiliser la regex

(\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 résultat
Mais si l'entrée est "foo\t bar" il restera inchangé car il ne comporte pas de caractères d'espacement consécutifs.

Si vous traitez tous les caractères d'espacement (espace, tabulation verticale, tabulation horizontale, retour chariot, saut de page, nouvelle ligne) comme des espaces, vous pouvez utiliser la commande rationnelle suivante pour les remplacer tout nombre d'espaces blancs consécutifs avec un seul espace :

str = str.replaceAll("\\s+"," ");

Mais si vous voulez remplacer deux espaces blancs consécutifs par un seul espace, vous devriez le faire :

str = str.replaceAll("\\s{2}"," ");

9voto

Sachin Shanbhag Points 20979

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(" ");

string est votre chaîne sur laquelle vous devez supprimer les espaces blancs en double

9voto

wutzebaer Points 1968

La méthode la plus rapide (mais pas la plus jolie) que j'ai trouvée est la suivante

while (cleantext.indexOf("  ") != -1)
  cleantext = StringUtils.replace(cleantext, "  ", " ");

cela fonctionne assez rapidement sur Android contrairement à une regex

0voto

jonnysamps Points 403

Si vous voulez vous débarrasser de tous les espaces blancs étrangers en tête et en queue, vous devez faire quelque chose comme ceci :

// \\A = Start of input boundary
// \\z = End of input boundary 
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");

Vous pouvez ensuite supprimer les doublons en utilisant les autres stratégies énumérées ici :

string = string.replaceAll("\\s+"," ");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X