10
votes

Regex pour éliminer les espaces

Comment écrire une regex pour supprimer les espaces en Java?

Par exemple P>

   input = "                   "  or input = "    "


1 commentaires

J'ai réaffiche un peu votre question parce que "WhitSpace" comprend des onglets et des nouvelles lignes (et formes de formes, etc.), vous devez donc utiliser le terme "espace" à la place.


4 Réponses :


14
votes

Ce qui suit le fera: xxx

alternativement: xxx

dans mes repères, ce dernier était de ~ 40% plus rapide que le ancien.


1 commentaires

@Christophed: oh oui c'est :-) Le "" est une regex qui correspond à un espace.



0
votes

Pourquoi ne pas essayer un simple / [] + / ? Cela devrait être ce dont vous avez besoin.


4 commentaires

WONT \ S Les onglets de capture également? La question ne veut pas que les onglets soient supprimés.


Ouais ça m'a bête de moi. L'utilisation d'une classe de caractères est probablement plus appropriée ici.


Vous devriez au moins utiliser + sous forme de quantificateur (sinon, vous ferez une opération "Rien de substituer sans rien" sur chaque emplacement entre deux caractères non spatiaux de la chaîne entière). En outre, déposez les crochets - ce n'est qu'un personnage, de sorte que vous n'avez pas besoin d'une classe de caractères (bien que l'on puisse affirmer cela aide la lisibilité, et le moteur Regex de Java sera suffisamment intelligent pour l'optimiser).


Merci beaucoup pour vos suggestions. Je laisserai les crochets parce que j'aime la flexibilité et (comme vous l'avez mentionné) une lisibilité imporillée. Mais j'ajouterai le plus cependant.



1
votes

Vous pouvez faire - xxx pré>

si vous vérifiez la définition de remplacer code> et remplailleLL code> méthode - p>

File size -> 6458400
replaceAll -> 94 millisecond
replace -> 78 millisecond


2 commentaires

Pouvez-vous faire du temps et comparer str.replace ("", ""); contre str.replaceall ("+", ""); ? Ce serait intéressant.


@TIMPIETZCKER - Vérifiez bien le résultat du test.



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

0 commentaires