регулярное выражение для точного соответствия 11-значного номера телефона из строки и удаления дефиса (-) из соответствия в c # - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю анализатор текста в форме окна c # и хочу идентифицировать 11-значные телефонные номера, начинающиеся с 0, с разделителем - , например, 0341-2239548 или 021-34223311, должны быть преобразованы в 03412239548 и 02134223311 соответственно с использованием Regex.Match. Я не могу найти соответствующее выражение регулярного выражения, кто-нибудь может мне помочь, пожалуйста?

string [] RemoveCharacter = {"\" "," (",") "," / = "," / ",": - ",": ","; "," - "};

        foreach (string word in RemoveCharacter)
        {
            s = s.Replace(word, " ");
        }

после удаления этих символов телефонные номера также разделяются пробелом, и я не хочу, чтобы это происходило только для телефонных номеров.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы можете использовать ниже Regex, чтобы удалить все дефисы и все другие нечисловые символы из номера телефона

string pattern = @"\b([\-]?\d[\-]?){11}\b";

Regex rgx = new Regex(pattern);

var sentence = "This is phone number 0341-2239548 and 021-34223311";

var matches = rgx.Matches(sentence);

foreach (Match match in matches)
{
    string replacedValue = Regex.Replace(match.Value, @"[^0-9]", "");
    sentence = sentence.Replace(match.Value, replacedValue);
}

См. Демо

0 голосов
/ 14 ноября 2018

если у вас есть такая строка, просто удалите разделитель. Для этого вам не нужно регулярное выражение:

string nr = "0154-1452146";
nr = nr.Replace("-", "");
Console.WriteLine(nr);
...