C# 对电话号码的格式功能很好奇

C# 对电话号码的格式功能很好奇,c#,C#,更新(已解决): 我使用以下代码以各种格式在循环中格式化电话号码: string PhoneNumber = "9998675309" String.Format("{0:" + formatString + "}", Convert.ToDouble(PhoneNumber)) 我需要以两种稍微不同的方式格式化电话号码。一个像我预料的那样出来了,另一个没有 所以,出于好奇,我决定做一个快速的控制台应用程序,看看我能想到的所有不同的电话号码格式。结果如下: 我的问题是:为什么其中一些人以他

更新(已解决):


我使用以下代码以各种格式在循环中格式化电话号码:

string PhoneNumber = "9998675309"
String.Format("{0:" + formatString + "}", Convert.ToDouble(PhoneNumber))
我需要以两种稍微不同的方式格式化电话号码。一个像我预料的那样出来了,另一个没有

所以,出于好奇,我决定做一个快速的控制台应用程序,看看我能想到的所有不同的电话号码格式。结果如下:

我的问题是:为什么其中一些人以他们看起来应该的方式出现,而另一些人却没有?其中一些字符需要转义字符吗?

格式字符串中的
具有特殊含义。确定小数分隔符在结果字符串中的位置。因此,您必须退出

在格式字符串中使用
的一些示例:

// the result is "3.40"
(3.4).ToString("#.00", CultureInfo.GetCultureInfo("en-US"))

// the result is "3,142"
(3.141592).ToString("#.000", CultureInfo.GetCultureInfo("nl-NL"))

这是一件小事,但你真的应该在格式化之前使用
long
而不是
double
来存储数字。如果我也做一些验证来确保它是1)正好10个字符长,2)只包含数字,这两种方法都不起作用吗?我是在一个很酷的点网小提琴上做的,效果很好!很高兴知道,谢谢。PS-值得注意。在我发帖之前,我尝试了一个快速测试,用一个反斜杠而不是你回答的两个反斜杠来逃避句点。也许这会帮助其他人。
// the result is "3.40"
(3.4).ToString("#.00", CultureInfo.GetCultureInfo("en-US"))

// the result is "3,142"
(3.141592).ToString("#.000", CultureInfo.GetCultureInfo("nl-NL"))