2009-03-25 9 views

Antwort

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

in (123) 456-7890 x 123 führt

+0

Ich bin gespannt, warum der double.Parse statt dem int.Parse? Sicherlich ist Int schneller. – Ray

+0

Wie vergleicht sich diese Leistung mit der Teilzeichenfolgenmethode? Weißt du, ob das ## - ## ... nur mit einem Teilstring-Verfahren geparst wird? – bendewey

+4

Ray, würde nicht int überlaufen? –

2

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.

7

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)); 
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(); 
+0

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. –

Verwandte Themen