Маскируйте телефон без использования Regex в c # - PullRequest
0 голосов
/ 03 декабря 2018

У нас есть поле Phone no, которое может содержать не более 9 цифр, и нам нужно замаскировать Phone no (который в основном является строкой) для отображения в пользовательском интерфейсе в качестве значения маски.

Мы пыталисьфрагмент кода ниже:

var pattern="^(/d{2})(/d{3})(/d*)$";
var regExp=new Regex(pattern);
return regExp.Replace(value, "$1-$2-$3");

этот фрагмент работает для 123456789 и отображает (123) 456-789, но для 12345 отображает () 12-345.

Не могли бы вы предложить, что будетздесь лучше всего подойдет для отображения номера телефона как (123) 456-789 для 123456789 и (123) 45 для 12345 Номер телефона

1 Ответ

0 голосов
/ 03 декабря 2018

Попробуйте следующее:

           string[] inputs = { "123456789", "12345" };

           string pattern = @"^(?'one'\d{3})(?'two'\d{3})(?'three'\d{3})|(?'one'\d{3})(?'two'\d{2})";
           string output = "";
           foreach (string input in inputs)
           {
               Match match = Regex.Match(input, pattern);
               if (match.Groups["three"].Value  == "")
                   output = string.Format("({0}) {1}", match.Groups["one"].Value, match.Groups["two"].Value);
               else
                   output = string.Format("({0}) {1}-{2}", match.Groups["one"].Value, match.Groups["two"].Value, match.Groups["three"].Value);
           }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...