2010-11-08 35 views
12

Estoy obteniendo un número de seguro social (SSN) de un depósito de datos. Al publicarlo en un CRM, quiero que tenga el formato XXX-XX-XXXX en lugar de XXXXXXXXX.Formatear un Número de Seguridad Social (SSN) como XXX-XX-XXXX de XXXXXXXXX

Es como convertir una cadena simple con guiones en las posiciones 4 y 7. Soy bastante nuevo en C#, ¿cuál es la mejor manera de hacer esto?

+0

Por cierto, la página de formato definitiva de C# es http://blog.stevex.net/string-formatting-in-csharp/ –

Respuesta

39

Consulte el método String.Insert.

string formattedSSN = unformattedSSN.Insert(5, "-").Insert(3, "-"); 
+1

Tricky. Es interesante observar que la respuesta "obvia" de hacerlo así (tenga en cuenta mi inversión de 3 y 5 en comparación con la suya): sin formatoSSN.Insertar (3, "-"). Insertar (5, "-"); produciría 123-4-56789 en lugar de 123-45-6789. Entonces, estás insertando guiones de atrás hacia adelante. – wageoghe

+0

Sí, podrías hacerlo hacia adelante en lugar de hacia atrás, pero entonces tendrías que dar cuenta del guión extra que insertaste. – GendoIkari

+0

¿Por qué se bajó este voto un mes y medio después de ser aceptado? – GendoIkari

50

Para una, y una solución sencilla, corta auto comentando, intente:

String.Format("{0:000-00-0000}", 123456789) 

123456789 que representa la variable de SSN.

+0

Tiene un # adicional en el medio. Aparte de eso, +1 porque es mucho más elegante que mi solución. – GendoIkari

+0

@Gendolkari - Gracias :) –

+3

Cierre, pero necesita "{0: 000-00-0000}" en lugar de '#' para permitir ceros a la izquierda (o "{0:00 # - ## - ### #} "etc.) – tnyfst

4
string ssn = "123456789"; 

string formattedSSN = string.Join("-", 
            ssn.Substring(0,3), 
            ssn.Substring(4,2), 
            ssn.Substring(6,4)); 

@ opción de George es probablemente más limpia si el SSN se almacena como un valor numérico en lugar de como una cadena.

0

Sin validación de datos y suponiendo que usted consigue solamente 9 cadena de caracteres, me gustaría ir con algo como esto -

return s.Substring(0, 3) + "-" + s.Substring(3, 2) + "-" + s.Substring(5, 4); 

... Pero también estoy bastante nuevo ... así que la respuesta de Gendō Ikari Soo es mucho mejor.

0

La respuesta anterior puede ser una excepción cuando la longitud de la cadena no es fija.

En mi caso, utilicé el siguiente formateo de SSN y su funcionamiento.

string SSN = "56245789"; 
if (SSN.Length > 3 && SSN <= 5) 
     SSN = SSN.Insert(3, "-"); 
else if (SSN.Length > 5) 
     SSN = SSN.Insert(5, "-").Insert(3, "-"); 

Por lo tanto, SSN obtendrá 562-45-789.

Cuestiones relacionadas