Ajout rapide des exigences dans notre projet. Un champ dans notre base de données pour contenir un numéro de téléphone est configuré pour n'autoriser que 10 caractères. Donc, si je passe "(913) -444-5555" ou autre chose, y a-t-il un moyen rapide d'exécuter une chaîne à travers une sorte de fonction de remplacement spéciale que je peux lui transmettre un jeu de caractères?
Regex?
c#
regex
string
phone-number
Matt Dawdy
la source
la source
[^\d]
peut être simplifiée à\D
Vous pouvez le faire facilement avec regex:
la source
Vous n'avez pas besoin d'utiliser Regex.
la source
system.linq;
Voici la méthode d'extension pour le faire.
la source
En utilisant les méthodes Regex dans .NET, vous devriez pouvoir faire correspondre n'importe quel chiffre non numérique en utilisant \ D, comme ceci:
la source
Que diriez-vous d'une méthode d'extension qui n'utilise pas regex.
Si vous vous en tenez à l'une des options Regex, utilisez au moins
RegexOptions.Compiled
la variable statique.Cela s'appuie sur la réponse d'Usman Zafar convertie en groupe de méthodes.
la source
pour obtenir les meilleures performances et réduire la consommation de mémoire, essayez ceci:
Le résultat sur mon ordinateur est:
Init ...
Heure: 307
Heure: 2178
la source
Je suis sûr qu'il existe un moyen plus efficace de le faire, mais je le ferais probablement:
la source
essaye ça
la source
return newPhone.ToString();
renverra "System.Char []". Je pense que vous vouliez direreturn new string(newPhone);
, mais c'est aussi filtrer les nombres 0 et 9 à cause de>
et<
au lieu de>=
et<=
. Mais même dans ce cas, la chaîne aura des espaces à la fin car lenewPhon
tableau est plus long que nécessaire.