Вы можете оказаться в ситуации, когда у вас есть пользователи, пытающиеся ввести телефонные номера со всеми видами разделителей между кодом города и блоком основного номера (например, пробелы, тире, точки, т. Д.) Вы захотите убрать ввод всех символов, которые не являются числами, чтобы вы могли стерилизовать ввод, с которым вы работаете. Самый простой способ сделать это с помощью выражения RegEx.
string formattedPhoneNumber = new System.Text.RegularExpressions.Regex(@"\D")
.Replace(originalPhoneNumber, string.Empty);
Тогда ответ, который вы перечислили, должен работать в большинстве случаев.
Чтобы ответить на вопрос о расширении, вы можете удалить все, что длиннее ожидаемой длины в десять (для обычного номера телефона), и добавить это в конец, используя
formattedPhoneNumber = Convert.ToInt64(formattedPhoneNumber)
.ToString("###-###-#### " + new String('#', (value.Length - 10)));
Вы захотите сделать проверку "если", чтобы определить, больше ли длина вашего ввода, чем 10, прежде чем делать это, если нет, просто используйте:
formattedPhoneNumber = Convert.ToInt64(value).ToString("###-###-####");