Qual è il modo più veloce per formattare una stringa utilizzando il formato telefonico USA [(XXX) XXX-XXXX] utilizzando C#?Il modo più veloce per formattare un numero di telefono in C#?
Il mio formato sorgente è una stringa.
Qual è il modo più veloce per formattare una stringa utilizzando il formato telefonico USA [(XXX) XXX-XXXX] utilizzando C#?Il modo più veloce per formattare un numero di telefono in C#?
Il mio formato sorgente è una stringa.
String.Format("{0:(###) ###-#### x ###}", double.Parse("1234567890123"))
Si tradurrà in (123) 456-7890 x 123
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".
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));
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();
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. –
che cosa è il vostro formato di origine? un'altra stringa? numeri semplici, non altri caratteri? – bendewey