当前位置:  开发笔记 > 编程语言 > 正文

用C#格式化电话号码的最快方法?

如何解决《用C#格式化电话号码的最快方法?》经验,为你挑选了3个好方法。

使用美国电话格式[(XXX)XXX-XXXX]使用c#格式化字符串的最快方法是什么?

我的源格式是一个字符串.



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

将导致(123)456-7890 x 123


雷,不会int溢出?
使用整数作为标识符(例如电话号码)是一种不好的做法,使用浮点类型很危险:http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding

2> BobbyShaftoe..:

这假定您拥有的电话号码包含适当的位数,如:

string p = "8005551234";

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



3> Guffa..:

这将采用包含以任何方式格式化的十位数的字符串,例如"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();

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有