Подтвердить что ты не робот

Самый быстрый способ форматирования номера телефона на С#?

Каков самый быстрый способ форматирования строки с использованием формата телефона США [(XXX) XXX-XXXX] с помощью С#?

Мой исходный формат - это строка.

4b9b3361

Ответ 1

String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123"))

В результате получится (123) 456-7890 x 123

Ответ 2

Это предполагает, что у вас есть номер телефона с соответствующим количеством цифр, хранящихся как:

string p = "8005551234";

string formatedPhoneNumber = string.Format("({0}) {1}-{2}", p.Substring(0, 3), p.Substring(3, 3), p.Substring(6, 4));

Ответ 3

Это займет строку, содержащую десять цифр, отформатированных любым способом, например "246 1377801" или даже ">> Phone:((246)) 13 - 778 - 01 <<", и отформатируйте ее как "(246) 137-7801":

string formatted = Regex.Replace(
   phoneNumber,
   @"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*$",
   "($1$2$3) $4$5$6-$7$8$9$10");

(Если строка не содержит ровно десяти цифр, вы получаете исходную строку без изменений.)

Edit:

Быстрыми способами построения строки является использование StringBuilder. Установив емкость на точную длину финальной строки, вы будете работать с тем же буфером строк без каких-либо перераспределений, а метод ToString вернет сам буфер в качестве окончательной строки.

Это предполагает, что исходная строка содержит только десять цифр:

string formatted =
   new StringBuilder(14)
   .Append('(')
   .Append(phoneNumber, 0, 3)
   .Append(") ")
   .Append(phoneNumber, 3, 3)
   .Append('-')
   .Append(phoneNumber, 6, 4)
   .ToString();

Ответ 4

Я бы предположил, что это будет:

var number = string.Format("({0}) {1}-{2}", oldNumber.Substring(0, 3), oldNumber.Substring(3, 3), oldNumber.Substring(6));

Это предполагает, что у вас есть номер, сохраненный как "1234567890", и хотите, чтобы он был "(123) 456-7890".