2011-01-20 164 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; 
    }