Cách nhanh nhất để định dạng chuỗi bằng định dạng điện thoại của Hoa Kỳ [(XXX) XXX-XXXX] bằng C#?Cách nhanh nhất để định dạng số điện thoại trong C#?
Định dạng nguồn của tôi là một chuỗi.
Cách nhanh nhất để định dạng chuỗi bằng định dạng điện thoại của Hoa Kỳ [(XXX) XXX-XXXX] bằng C#?Cách nhanh nhất để định dạng số điện thoại trong C#?
Định dạng nguồn của tôi là một chuỗi.
String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123"))
sẽ dẫn đến (123) 456-7890 x 123
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".
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));
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ạnstring formatted =
new StringBuilder(14)
.Append('(')
.Append(phoneNumber, 0, 3)
.Append(") ")
.Append(phoneNumber, 3, 3)
.Append('-')
.Append(phoneNumber, 6, 4)
.ToString();
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. –
? một chuỗi khác? số đơn giản, không phải các ký tự khác? – bendewey