2009-03-25 15 views

risposta

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

Si tradurrà in (123) 456-7890 x 123

+0

Sono curioso, perché il double.Parse al posto di int.Parse? Sicuramente int è più veloce. – Ray

+0

Come si confronta questa prestazione con il metodo della sottostringa. sai se il ## - ## ... è solo un'analisi con una tecnica di tipo sottotitoli? – bendewey

+4

Ray, non sarebbe overflow int? –

2

Vorrei assumere che sarebbe:

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

Questo presuppone che il numero memorizzato come "1234567890" e vuole che sia "(123) 456-7890".

7

Questo presuppone che il numero di telefono con il numero appropriato di cifre memorizzate come:

string p = "8005551234"; 

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

questo richiederà un stringa contenente dieci cifre formattati in qualsiasi modo, ad esempio "246 1377801" o anche ">> Phone:((246)) 13 - 778 - 01 <<", e formato come "(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"); 

(Se la stringa non contiene esattamente dieci cifre, si ottiene la stringa originale invariata.)

Edit:

A veloci modi per costruire una stringa è quello di utilizzare uno StringBuilder. Impostando la capacità sulla lunghezza esatta della stringa finale si lavorerà con lo stesso buffer di stringa senza alcuna riallocazione e il metodo ToString restituirà il buffer stesso come stringa finale.

questo presuppone che la stringa di origine contiene solo le dieci cifre:

string formatted = 
    new StringBuilder(14) 
    .Append('(') 
    .Append(phoneNumber, 0, 3) 
    .Append(") ") 
    .Append(phoneNumber, 3, 3) 
    .Append('-') 
    .Append(phoneNumber, 6, 4) 
    .ToString(); 
+0

Yow ... perché non eseguire solo 1 regex per rimuovere le non cifre e un secondo per eseguire la cattura/sostituzione? Non sarebbe così veloce ma sarebbe più pulito. –

Problemi correlati