Je reçois un numéro de sécurité sociale (SSN) d'un entrepôt de données. Lors de la publication sur un site CRM, je souhaite qu'il soit au format XXX-XX-XXXX
au lieu de XXXXXXXXX
.
C'est comme convertir une simple chaîne avec des tirets aux positions 4
et 7
. Je suis assez nouveau en C #, alors quel est le meilleur moyen de le faire?
Consultez la méthode String.Insert .
string formattedSSN = unformattedSSN.Insert(5, "-").Insert(3, "-");
Pour une solution simple, courte et auto-commentante, essayez:
String.Format("{0:000-00-0000}", 123456789)
123456789
représentant votre variable SSN.
string ssn = "123456789";
string formattedSSN = string.Join("-",
ssn.Substring(0,3),
ssn.Substring(4,2),
ssn.Substring(6,4));
L'option de @ George est probablement plus propre si le SSN est stocké sous forme numérique plutôt que sous forme de chaîne.
Juste au cas où cela aiderait quelqu'un, voici une méthode que j'ai créée pour masquer et formater un SSN:
UTILISATION:
string ssn = "123456789";
string masked = MaskSsn(ssn); // returns xxx-xx-6789
CODE:
public static string MaskSsn(string ssn, int digitsToShow = 4, char maskCharacter = 'x')
{
if (String.IsNullOrWhiteSpace(ssn)) return String.Empty;
const int ssnLength = 9;
const string separator = "-";
int maskLength = ssnLength - digitsToShow;
// truncate and convert to number
int output = Int32.Parse(ssn.Replace(separator, String.Empty).Substring(maskLength, digitsToShow));
string format = String.Empty;
for (int i = 0; i < maskLength; i++) format += maskCharacter;
for (int i = 0; i < digitsToShow; i++) format += "0";
format = format.Insert(3, separator).Insert(6, separator);
format = "{0:" + format + "}";
return String.Format(format, output);
}
Sans validation des données et en supposant que vous n'obtenez que 9 chaînes de caractères, je choisirais quelque chose comme ceci -
return s.Substring(0, 3) + "-" + s.Substring(3, 2) + "-" + s.Substring(5, 4);
Mais ... je suis aussi assez nouveau ... alors la réponse de GendoIkari est bien meilleure.
La réponse ci-dessus peut être une exception levée lorsque la chaîne n'est pas de longueur fixe.
Dans mon cas, j’ai utilisé la manière suivante de formater SSN et son fonctionnement.
string SSN = "56245789";
if (SSN.Length > 3 && SSN <= 5)
SSN = SSN.Insert(3, "-");
else if (SSN.Length > 5)
SSN = SSN.Insert(5, "-").Insert(3, "-");
Ainsi, le SSN obtiendra 562-45-789.