2011-01-20 127 views
5

电话号码,我在C#中的字符串值1233873600,我必须把它转换为123-387-7300在C#格式字符串在C#

是否有任何内置的功能,这将做到这一点在C#?

+0

不存在没有,但你可以很容易地写你自己的。 – 2011-01-20 14:32:41

+0

[如何在C#中将字符串格式化为电话号码](http://stackoverflow.com/questions/188510/how-to-format-a-string-as-a-telephone-number-in- c) – stuartd 2011-01-20 14:34:04

回答

0

你可能想用这个正则表达式。北美电话号码正则表达式看起来像这样

^(\(?[0-9]{3}\)?)?\-?[0-9]{3}\-?[0-9]{4}$ 

我想你可以使用C#Regex.Replace方法。

8

将您的字符串转换为长整型并使用"{0:### ### ####}"格式;

string.Format("{0:(###) ###-####}", 1112223333); 
3
string phone = "1233873600".Insert(6, "-").Insert(3, "-"); 
1

您可以使用,将采取字符串,消毒输入,以删除空格或不需要的特殊字符被用作分隔符,然后使用ToString方法内置一个简单的辅助方法。如果你检查不同的长度,你也可以保证格式出现,只要你认为合适。例如:

public string FormatPhoneNumber(string phoneNumber) 
    { 
     string originalValue = phoneNumber; 

     phoneNumber= new System.Text.RegularExpressions.Regex(@"\D") 
      .Replace(phoneNumber, string.Empty); 

     value = value.TrimStart('1'); 

     if (phoneNumber.Length == 7) 

      return Convert.ToInt64(value).ToString("###-####"); 
     if (phoneNumber.Length == 9) 

      return Convert.ToInt64(originalValue).ToString("###-###-####"); 
     if (phoneNumber.Length == 10) 

      return Convert.ToInt64(value).ToString("###-###-####"); 

     if (phoneNumber.Length > 10) 
      return Convert.ToInt64(phoneNumber) 
       .ToString("###-###-#### " + new String('#', (phoneNumber.Length - 10))); 

     return phoneNumber; 
    }