2009-03-25 30 views

Trả lời

43
String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123")) 

sẽ dẫn đến (123) 456-7890 x 123

+0

Tôi tò mò, tại sao double.Parse thay vì int.Parse? Chắc chắn int là nhanh hơn. – Ray

+0

Hiệu suất này so với phương thức chuỗi con như thế nào. bạn có biết nếu ## - ## ... nó chỉ phân tích cú pháp bằng kỹ thuật kiểu chuỗi con? – bendewey

+4

Ray, sẽ không tràn? –

2

tôi sẽ giả định nó muốn được:

var number = string.Format("({0}) {1}-{2}", oldNumber.Substring(0, 3), oldNumber.Substring(3, 3), oldNumber.Substring(6)); 

này giả định rằng bạn có số lưu dưới dạng "1234567890" và muốn nó được "(123) 456-7890".

7

này giả định rằng bạn có số điện thoại với số lượng thích hợp của các chữ số được lưu trữ như:

string p = "8005551234"; 

string formatedPhoneNumber = string.Format("({0}) {1}-{2}", p.Substring(0, 3), p.Substring(3, 3), p.Substring(6, 4)); 
4

này sẽ mất một chuỗi chứa mười chữ số được định dạng theo bất kỳ cách nào, ví dụ: "246 1377801" hoặc thậm chí ">> Phone:((246)) 13 - 778 - 01 <<" và định dạng nó là "(246) 137-7801":

string formatted = Regex.Replace(
    phoneNumber, 
    @"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*$", 
    "($1$2$3) $4$5$6-$7$8$9$10"); 

(Nếu chuỗi không chứa chính xác mười chữ số, bạn sẽ có được chuỗi ban đầu không thay đổi.)

Edit:

Một cách nhanh chóng để xây dựng một chuỗi là sử dụng một StringBuilder. Bằng cách thiết lập dung lượng cho độ dài chính xác của chuỗi cuối cùng, bạn sẽ làm việc với cùng một bộ đệm chuỗi mà không có bất kỳ sự tái phân bổ nào và phương thức ToString sẽ trả về chính bộ đệm làm chuỗi cuối cùng.

này giả định rằng chuỗi nguồn chứa chỉ có mười chữ số:

whats định dạng nguồn của bạn
string formatted = 
    new StringBuilder(14) 
    .Append('(') 
    .Append(phoneNumber, 0, 3) 
    .Append(") ") 
    .Append(phoneNumber, 3, 3) 
    .Append('-') 
    .Append(phoneNumber, 6, 4) 
    .ToString(); 
+0

Yow ... tại sao không chỉ chạy 1 regex để loại bỏ các chữ số và một giây để thực hiện việc chụp/thay thế? Sẽ không nhanh như vậy nhưng nó sẽ sạch hơn. –

Các vấn đề liên quan