String.Format不能格式化电话号码。

3
String.Format("{0:###-###-####}", customer.ContactHome); //NOT working (9891205789)

但是

String.Format("{0:###-###-####}", Convert.ToInt64(customer.ContactHome)); //Works fine (989-120-5789)

但由于某些原因,我不想将电话号码强制转换。那么我该如何在不强制转换的情况下格式化电话号码?


2
联系人主页原始类型是什么? - ariel
4个回答

7
如果 customer.ContactHome 是字符串,您可以这样做:
Regex.Replace(customer.ContactHome, "(\d\d\d)(\d\d\d)(\d\d\d\d)", "$1-$2-$3");

或者

customer.ContactHome.Substring(0,3) + "-" +
customer.ContactHome.Substring(3,3) + "-" + 
customer.ContactHome.Substring(6,4);

你是否正在使用 System.Text.RegularExpressions.Regex.Replace? - ariel

5
您正在对字符串customer.ContactHome使用数字格式化("{0:###-###-####}"),这就是为什么它无法工作的原因。

0
如果customer.ContactHome是一个string,它将不会使用数字格式进行格式化,因为它已经是一个字符串,而格式字符串期望一个数字。

0

如果您不想强制转换值并且也不想使用正则表达式,您可以始终使用String方法,例如Substring来获取格式化的字符串值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接