2011-01-20 58 views
5

Tôi có một giá trị chuỗi 1233873600 trong C# và tôi phải chuyển nó sang 123-387-7300 trong C#Format String như số điện thoại trong C#

Có bất kỳ chức năng trong xây dựng mà sẽ làm điều đó trong C#?

+0

không có, nhưng bạn có thể dễ dàng viết của riêng bạn. –

+0

bản sao có thể có của [Cách định dạng chuỗi dưới dạng số điện thoại trong C#] (http://stackoverflow.com/questions/188510/how-to-format-a-string-as-a-telephone-number-in- c) – stuartd

Trả lời

0

Bạn có thể muốn sử dụng regex cho việc này. Regex cho số điện thoại ở Bắc Mỹ trông giống như thế này

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

Tôi đoán bạn có thể sử dụng phương pháp Regex.Replace trong C#.

+0

sử dụng chuỗi định dạng sẽ là phương pháp ưu tiên để thực hiện việc này. dễ đọc hơn và tính toán nhanh hơn. – cazlab

8

Truyền chuỗi của bạn dài và sử dụng định dạng "{0:### ### ####}";

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

Tôi nghĩ rằng regex là lựa chọn tốt nhất.

trang web này thật tuyệt vời để tìm các chuỗi regex được tạo trước.

http://www.regexlib.com/

1

Bạn có thể sử dụng một phương pháp helper đơn giản mà sẽ mất chuỗi, khử trùng đầu vào để loại bỏ khoảng trắng hoặc ký tự đặc biệt không mong muốn được sử dụng như thiết bị tách, và sau đó sử dụng phương pháp ToString built-in. Nếu bạn kiểm tra các độ dài khác nhau, bạn cũng có thể đảm bảo định dạng xuất hiện khi bạn thấy phù hợp. Ví dụ:

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; 
    } 
Các vấn đề liên quan