Замена, нечисловая с пустой строкой

123
задан Vadim Kotov 10 October 2017 в 10:07
поделиться

5 ответов

Определенно regex:

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

или в классе, чтобы не воссоздавать regex все время:

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

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

В зависимости от Ваших реальных исходных данных, можно хотеть, чтобы некоторая дополнительная логика там сделала вещи как полоса, ведущая 1 (для большого расстояния) или что-либо запаздывающее x или X (для расширений).

244
ответ дан 24 November 2019 в 01:09
поделиться

Можно сделать это легко с regex:

string subject = "(913)-444-5555";
string result = Regex.Replace(subject, "[^0-9]", ""); // result = "9134445555"
71
ответ дан 24 November 2019 в 01:09
поделиться

Используя методы Regex в.NET необходимо смочь соответствовать любой нечисловой цифре с помощью \D, как так:

phoneNumber  = Regex.Replace(phoneNumber, "\D", "");
8
ответ дан 24 November 2019 в 01:09
поделиться

попробуйте это

public static string cleanPhone(string inVal)
        {
            char[] newPhon = new char[inVal.Length];
            int i = 0;
            foreach (char c in inVal)
                if (c.CompareTo('0') > 0 && c.CompareTo('9') < 0)
                    newPhon[i++] = c;
            return newPhon.ToString();
        }
-1
ответ дан 24 November 2019 в 01:09
поделиться

Я уверен, что существует более эффективный способ сделать это, но я, вероятно, сделал бы это:

string getTenDigitNumber(string input)
{    
    StringBuilder sb = new StringBuilder();
    for(int i - 0; i < input.Length; i++)
    {
        int junk;
        if(int.TryParse(input[i], ref junk))
            sb.Append(input[i]);
    }
    return sb.ToString();
}
3
ответ дан 24 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: