Was ist der schnellste Weg, um eine Zeichenkette mit dem US-Telefonformat [(XXX) XXX-XXXX] mit C# zu formatieren?Schnellste Möglichkeit, eine Telefonnummer in C# zu formatieren?
Mein Quellformat ist eine Zeichenkette.
Was ist der schnellste Weg, um eine Zeichenkette mit dem US-Telefonformat [(XXX) XXX-XXXX] mit C# zu formatieren?Schnellste Möglichkeit, eine Telefonnummer in C# zu formatieren?
Mein Quellformat ist eine Zeichenkette.
String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123"))
in (123) 456-7890 x 123 führt
Ich würde annehmen, dass es sein würde:
var number = string.Format("({0}) {1}-{2}", oldNumber.Substring(0, 3), oldNumber.Substring(3, 3), oldNumber.Substring(6));
Dies setzt voraus, dass Sie die Nummer gespeichert als „1234567890“ und wollen es „(123) 456-7890“ sein.
Dies setzt voraus, dass Sie die Telefonnummer mit der entsprechenden Anzahl von Ziffern wie gespeichert haben:
string p = "8005551234";
string formatedPhoneNumber = string.Format("({0}) {1}-{2}", p.Substring(0, 3), p.Substring(3, 3), p.Substring(6, 4));
Dies dauert ein Zeichenkette mit zehn Ziffern, die in irgendeiner Form formatiert sind, z. B. "246 1377801"
oder sogar ">> Phone:((246)) 13 - 778 - 01 <<"
, und als "(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");
formatieren
(Wenn die Zeichenfolge nicht enthält genau zehn Ziffern, erhalten Sie die ursprüngliche Zeichenfolge unverändert.)
Edit:
Eine schnelle Möglichkeiten, um eine Zeichenfolge zu bauen, ist ein Stringbuilder zu verwenden. Indem Sie die Kapazität auf die exakte Länge der letzten Zeichenfolge festlegen, arbeiten Sie mit dem gleichen Zeichenfolgenpuffer ohne Neuzuweisungen, und die ToString-Methode gibt den Puffer selbst als letzte Zeichenfolge zurück.
Dies setzt voraus, dass die Quellzeichenfolge nur die zehn Ziffern enthält:
string formatted =
new StringBuilder(14)
.Append('(')
.Append(phoneNumber, 0, 3)
.Append(") ")
.Append(phoneNumber, 3, 3)
.Append('-')
.Append(phoneNumber, 6, 4)
.ToString();
Yow ... warum nicht einfach 1 Regex ausführen, um nicht-Ziffern zu strippen und eine Sekunde, um das Capturen/Ersetzen zu machen? Wäre nicht so schnell, aber es wäre heller sauberer. –
was ist Ihr Quellformat? eine andere Schnur? einfache Zahlen, keine anderen Zeichen? – bendewey