使用美国电话格式[(XXX)XXX-XXXX]使用c#格式化字符串的最快方法是什么?
我的源格式是一个字符串.
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");
(如果字符串不包含十位数字,则原始字符串不变.)
编辑:
构建字符串的快速方法是使用StringBuilder.通过将容量设置为最终字符串的精确长度,您将使用相同的字符串缓冲区而不进行任何重新分配,并且ToString方法将返回缓冲区本身作为最终字符串.
这假设源字符串仅包含十位数字:
string formatted = new StringBuilder(14) .Append('(') .Append(phoneNumber, 0, 3) .Append(") ") .Append(phoneNumber, 3, 3) .Append('-') .Append(phoneNumber, 6, 4) .ToString();