Comment supprimer les espaces blancs en double (y compris les onglets, les retours à la ligne, les espaces, etc ...) dans une chaîne en utilisant Java?Comment supprimer les espaces blancs en double dans une chaîne en utilisant Java?
Répondre
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 cela signifie \s+
?
est une expression régulière. \s
correspond à un espace, une tabulation, une nouvelle ligne, un retour chariot, un saut de page ou un onglet vertical, et +
indique "un ou plusieurs d'entre eux". Ainsi, le code ci-dessus écrase toutes les "sous-chaînes d'espaces" de plus d'un caractère, avec un caractère espace unique.
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 en double
Vous pouvez utiliser la regex
(\s)\1
et
le remplacer par $1
.
code Java:
str = str.replaceAll("(\\s)\\1","$1");
Si l'entrée est "foo\t\tbar "
vous obtiendrez "foo\tbar "
en sortie
Mais si l'entrée est "foo\t bar"
il ne changera pas parce qu'elle n'a pas de caractères blancs consécutifs.
Si vous traitez tous les caractères blancs (espace, tabulation verticale, tabulation horizontale, retour de chariot, de forme, nouvelle ligne) que l'espace que vous pouvez ensuite utiliser l'expression rationnelle suivante pour remplacer tout nombre d'espaces consécutifs avec un seul espace:
str = str.replaceAll("\\s+"," ");
Mais si vous voulez remplacer deux espaces consécutifs avec un seul espace que vous devez faire:
str = str.replaceAll("\\s{2}"," ");
Cela peut être possible en trois étapes:
- Convertir la chaîne pour tableau de caractères (ToCharArray)
- Appliquer boucle sur la matrice de charater
- Appliquez ensuite la chaîne remplacer la fonction (Remplacer (« vous piquer à remplacer », « chaîne d'origine »));
Ce n'est pas une bonne solution, tomber dans un tableau char ne résout rien. Vous n'êtes pas en train d'expliquer comment faire le remplacement, qui est le cœur du problème. Aussi, veuillez ** ne pas ** publier des liens complètement indépendants. Vous serez marqué comme un spammeur si vous le faites. – Mat
Si vous voulez vous débarrasser de tous les espaces avant et étrangers alors que 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 avec les autres stratégies énumérées ici:
string = string.replaceAll("\\s+"," ");
salut i est trouvé
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
le plus rapide (mais pas la plus jolie façon)
Fonctionne uniquement pour les espaces mais pas pour les autres espaces tels que les onglets et les retours à la ligne. – Pang
Je sais, vous devez ajouter plus de ces boucles en boucle pour d'autres entités. Mais ce code fonctionne beaucoup plus vite sur Android que ces regex, j'ai dû traiter des ebooks complets. – wutzebaer
Énormément plus rapide sur le bureau aussi. N'a pas testé pour une grosse chaîne, mais si vous prévoyez de l'exécuter sur beaucoup de petites chaînes c'est la réponse que vous recherchez. – Ivelate
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 son type. C'est:
Hello!\n\n\nMy World
sera
Hello!\nMy World
avis il y a encore avant et arrière des espaces blancs. Donc, ma solution complète est:
str = str.trim().replaceAll("(\\s)+", "$1"));
Ici, trim()
remplace toutes les chaînes avant et arrière de l'espace blanc avec « ». (\\s)
est pour capturer \\s
(c'est-à-dire des espaces blancs tels que '', '\ n', '\ t') dans groupe # 1. Le signe +
sert à faire correspondre 1 ou plusieurs jetons précédents. Ainsi, (\\s)+
peut être des caractères consécutifs (1 ou plus) parmi tous les caractères d'espace blanc ('', '\ n' ou '\ t'). $1
est de remplacer les chaînes correspondantes par la chaîne groupe # 1 (qui contient seulement 1 caractère espace blanc) du type correspondant (c'est le caractère d'espace blanc unique qui a correspondu). La solution ci-dessus changera comme ceci:
Hello!\n\n\nMy World
sera
Hello!\nMy World
Je ne l'ai pas trouvé ma solution ci-dessus ici, donc je l'ai posté.
Vous pouvez également essayer d'utiliser String Tokeniser pour tout espace, onglet, nouvelle ligne, etc. Une façon simple est,
String s = "Your Text Here";
StringTokenizer st = new StringTokenizer(s, " ");
while(st.hasMoreTokens())
{
System.out.print(st.nextToken());
}
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
- 1. php supprimer les espaces blancs
- 2. Oracle - comment supprimer les espaces blancs?
- 3. Regex en Java et ignorant les espaces blancs
- 4. Supprimer les espaces blancs principaux en utilisant lookbehind de longueur variable dans RegExp
- 5. Comment supprimer des espaces blancs de fin mais pas des espaces blancs dans une chaîne (ni au début)?
- 6. J'ai besoin de regex (en utilisant C#) pour condenser tous les espaces blancs en espaces blancs simples
- 7. preg_replace: comment supprimer tous les espaces blancs et ?
- 8. Supprimer les espaces blancs de début/de fin dans JAXB?
- 9. dans les chaînes C, NULL, espaces blancs
- 10. supprimer le code en double dans java
- 11. Identification des espaces blancs en C++
- 12. Comment supprimer des espaces blancs supplémentaires en utilisant javascript ou jquery?
- 13. Ignorer les espaces blancs
- 14. Pour filtrer les espaces blancs en images dans LATEX
- 15. Convertir une chaîne en double - Java
- 16. Comment puis-je diviser une chaîne en rubis maintien des espaces blancs dans la division
- 17. Comment supprimer les espaces d'une chaîne dans OCaml?
- 18. supprimer les balises html de la chaîne en utilisant java
- 19. Supprimer des espaces dans la chaîne XML
- 20. espaces blancs Version du milieu de chaîne
- 21. JSON et espaces blancs dans les identifiants
- 22. Comment faire pour supprimer les espaces insignifiants en HTML
- 23. Comment couper les espaces blancs les plus à gauche et les plus à droite d'une chaîne en utilisant PHP?
- 24. Supprimer les fichiers en double en utilisant ant?
- 25. Comment supprimer les enregistrements en double dans une table?
- 26. supprimer les lignes en double
- 27. Comment supprimer des xml-nodes en double en utilisant xslt?
- 28. Supprimer les ID en double?
- 29. Comment supprimer les espaces blancs et les côtés vierges dans les animations Flash?
- 30. La meilleure façon de supprimer les caractères en double (mots) dans une chaîne?
pourquoi il n'y a pas de méthode replaceAll ?? Est-ce que le dernier JDK supporte cette méthode ??? –
@SuhrobSamiev - String.replaceAll() est en Java depuis le JDK 1.4. http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String) –
J'aimerais pouvoir ajouter plus de +1 pour l'explication géniale de \ s +. – Cyntech