Comment supprimer tous les caractères non alphanumériques d'une chaîne à l'exception des tirets et des espaces?
606
Remplacez [^a-zA-Z0-9 -]
par une chaîne vide.
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");
-
doit être à la fin de la classe de personnage, ou échappé avec une barre oblique inverse, pour éviter d'être utilisé pour une plage.replaceAll
fonction au lieu dereplace
.return Regex.Replace(str, "[^a-zA-Z0-9_.]+", "", RegexOptions.Compiled);
Même question de base""
etstring.Empty
exactement la même chose. stackoverflow.com/questions/151472/…J'aurais pu utiliser RegEx, ils peuvent fournir une solution élégante mais ils peuvent causer des problèmes de performance. Voici une solution
Lors de l'utilisation du cadre compact (qui n'a pas FindAll)
Remplacez FindAll par 1
1 Commentaire par ShawnFeatherly
la source
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-')).ToArray();
Tu peux essayer:
Où
s
est ta chaîne.la source
Utilisation de System.Linq
la source
Le regex est
[^\w\s\-]*
:\s
est préférable d'utiliser à la place de space (), car il peut y avoir un onglet dans le texte.
la source
Sur la base de la réponse à cette question, j'ai créé une classe statique et ajouté ces derniers. Je pensais que cela pourrait être utile pour certaines personnes.
Ensuite, les méthodes peuvent être utilisées comme:
la source
Vous voulez quelque chose de rapide?
Cela vous permettra également de spécifier les caractères que vous souhaitez autoriser.
la source
Voici une solution rapide conviviale d'allocation de tas non regex qui était ce que je cherchais.
Édition non sécurisée.
Et pour ceux qui ne veulent pas utiliser dangereux ou ne font pas confiance au hack de longueur de chaîne.
la source
J'ai fait une solution différente, en éliminant les caractères de contrôle , ce qui était mon problème d'origine.
C'est mieux que de mettre dans une liste tous les caractères "spéciaux mais bons"
c'est plus simple, donc je pense que c'est mieux!
la source
Voici une méthode d'extension utilisant la réponse @ata comme source d'inspiration.
ou si vous avez besoin de caractères supplémentaires autres que le trait d'union ...
la source
J'utilise ici une variante de l'une des réponses. Je veux remplacer les espaces par "-" afin que son référencement soit convivial et également en minuscules. Ne référence pas non plus system.web à partir de ma couche de services.
la source
Voici une version très concise
la source
Il y a un moyen beaucoup plus simple avec Regex.
la source