Comment supprimer les espaces blancs en double dans string en utilisant Java?
9 réponses
comme ceci:
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 ça veut dire \s+
?
\s+
est une expression régulière. \s
correspond à un espace, tabulation, nouvelle ligne, retour chariot, saut de page ou onglet vertical, et +
dit "un ou plusieurs de ces". Ainsi, le code ci-dessus va s'effondrer tous les "espaces sous-chaînes" de plus d'un caractère, avec un seul caractère espace.
Source: Java: la Suppression doubles espaces dans les chaînes
vous pouvez utiliser le regex
(\s)
et
remplacer par .
code Java:
str = str.replaceAll("(\s)\1","");
Si l'entrée est "foo\t\tbar "
, vous obtiendrez "foo\tbar "
en sortie
Mais si l'entrée est "foo\t bar"
elle restera inchangé car il n'a pas d'espaces consécutifs caractères.
si vous traitez tous les espaces caractères (espace, onglet vertical, onglet horizontal, retour de chariot, alimentation de formulaire, nouvelle ligne) comme espace, vous pouvez utiliser le regex suivant pour remplacer n'importe quel nombre d'espace blanc consécutif avec un seul espace:
str = str.replaceAll("\s+"," ");
mais si vous voulez 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ù string
est votre chaîne sur laquelle vous devez supprimer les espaces blancs dupliqués
salut le plus rapide (mais pas la plus jolie façon), j'ai trouvé est
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
c'est assez rapide sur android en face d'un 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 avec un espace blanc de son type. C'est-à-dire:
Hello!\n\n\nMy World
sera
Hello!\nMy World
remarquez qu'il y a encore des espaces blancs en tête et en queue. Donc ma solution complète est:
str = str.trim().replaceAll("(\s)+", ""));
remplace trim()
par"". (\s)
est pour capturer \s
(qui est des espaces blancs tels que', '\n',' \T') dans Groupe #1 . Le signe +
est pour correspondre à 1 ou plusieurs jetons précédents. Ainsi (\s)+
peut être des caractères consécutifs (1 ou plus) parmi n'importe quel caractère d'espace blanc simple (' ', '\n' ou '\t'). est destiné à remplacer les chaînes correspondantes par la chaîne Groupe #1 (qui ne contient qu'un caractère d'espace blanc) du type correspondant (c'est-à-dire le caractère d'espace blanc simple qui a correspondu). La solution ci-dessus va changer comme ceci:
Hello!\n\n\nMy World
sera
Hello!\nMy World
Je n'ai pas trouvé ma solution ci-dessus ici donc je l'ai posté.
si vous voulez vous débarrasser de tous les blancs externes menant et traînant alors vous voulez faire quelque chose comme ceci:
// \A = Start of input boundary
// \z = End of input boundary
string = string.replaceAll("\A\s+(.*?)\s+\z", "");
ensuite, vous pouvez supprimer les doublons en utilisant les autres stratégies énumérées ici:
string = string.replaceAll("\s+"," ");
vous pouvez également essayer D'utiliser la chaîne Tokeniser, pour n'importe quel espace, onglet, newline, et tout. Une façon simple est,
String s = "Your Text Here";
StringTokenizer st = new StringTokenizer( s, " " );
while(st.hasMoreTokens())
{
System.out.print(st.nextToken());
}
cela peut être possible en trois étapes:
- convertissez la chaîne en tableau de caractères (ToCharArray)
- s'Appliquent pour la boucle sur le personnage de tableau
- puis appliquer chaîne remplacer fonction (Remplacer ("sting you want to replace", "chaîne d'origine"));