Comment écrire une regex pour supprimer les espaces en Java?
Par exemple P>
input = " " or input = " "
4 Réponses :
Ce qui suit le fera: alternativement: p> dans mes repères, ce dernier était de ~ 40% plus rapide que le ancien. p> p>
@Christophed: oh oui c'est :-) Le "" code> est une regex qui correspond à un espace.
Pourquoi ne pas essayer un simple / [] + / code>? Cela devrait être ce dont vous avez besoin. P>
WONT \ S code> 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 + code> 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.
Vous pouvez faire - 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
Pouvez-vous faire du temps et comparer str.replace ("", ""); code> contre str.replaceall ("+", ""); code>? Ce serait intéressant.
@TIMPIETZCKER - Vérifiez bien le résultat du test.
String str = " ";
str = str.replaceAll("\\s+","");
J'ai réaffiche un peu votre question parce que "WhitSpace" comprend des onglets i> et des nouvelles lignes (et formes de formes, etc.), vous devez donc utiliser le terme "espace" à la place.