Каков самый быстрый способ форматирования строки с использованием формата телефона США [(XXX) XXX-XXXX] с помощью С#?
Мой исходный формат - это строка.
Каков самый быстрый способ форматирования строки с использованием формата телефона США [(XXX) XXX-XXXX] с помощью С#?
Мой исходный формат - это строка.
String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123"))
В результате получится (123) 456-7890 x 123
Это предполагает, что у вас есть номер телефона с соответствующим количеством цифр, хранящихся как:
string p = "8005551234";
string formatedPhoneNumber = string.Format("({0}) {1}-{2}", p.Substring(0, 3), p.Substring(3, 3), p.Substring(6, 4));
Это займет строку, содержащую десять цифр, отформатированных любым способом, например "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();
Я бы предположил, что это будет:
var number = string.Format("({0}) {1}-{2}", oldNumber.Substring(0, 3), oldNumber.Substring(3, 3), oldNumber.Substring(6));
Это предполагает, что у вас есть номер, сохраненный как "1234567890", и хотите, чтобы он был "(123) 456-7890".