На всякий случай, если это кому-то поможет, вот метод, который я создал для маскировки и форматирования номера SSN:
ИСПОЛЬЗОВАНИЕ:
string ssn = "123456789";
string masked = MaskSsn(ssn); // returns xxx-xx-6789
КОД:
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);
}