129 votes

Remplacer non-numérique avec une chaîne vide

Ajout rapide de l'exigence dans notre projet. Un champ de la DB pour contenir un numéro de téléphone est configuré pour permettre uniquement à 10 caractères. Donc, si je suis passé "(913)-444-5555" ou quoi que ce soit d'autre, est-il un moyen rapide de faire passer une ficelle à travers une sorte de spécial remplacer la fonction que je peux passer à un ensemble de caractères pour permettre?

Regex?

260voto

Joel Coehoorn Points 190579

Certainement regex:

string CleanPhone(string phone)
{
    Regex digitsOnly = new Regex(@"[^\d]");   
    return digitsOnly.Replace(phone, "");
}

ou au sein d'une classe pour éviter de re-création de la regex tout le temps:

private static Regex digitsOnly = new Regex(@"[^\d]");   

public static string CleanPhone(string phone)
{
    return digitsOnly.Replace(phone, "");
}

En fonction de votre monde réel entrées, vous voudrez peut-être une logique supplémentaire là pour faire des choses comme la bande de 1 (pour les longues distances) ou quoi que ce soit de remorquage d'un x ou x (pour les extensions).

79voto

CMS Points 315406

Vous pouvez le faire facilement avec les regex:

string subject = "(913)-444-5555";
string result = Regex.Replace(subject, "[^0-9]", ""); // result = "9134445555"

45voto

Usman Zafar Points 294

Je pense que vous n'avez pas besoin d'utiliser les Regex.

phone = new String(phone.Where(c => char.IsDigit(c)).ToArray())

23voto

Aaron Points 265

Voici la méthode d'extension moyen de le faire.

public static class Extensions
{
    public static string ToDigitsOnly(this string input)
    {
        Regex digitsOnly = new Regex(@"[^\d]");
        return digitsOnly.Replace(input, "");
    }
}

10voto

Wes Mason Points 769

En utilisant les Regex méthodes .NET, vous devriez être en mesure de correspondre à tout caractère non numérique à l'aide de \D, comme suit:

phoneNumber  = Regex.Replace(phoneNumber, "\D", "");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X