Ответ 1
Ознакомьтесь с методом String.Insert.
string formattedSSN = unformattedSSN.Insert(5, "-").Insert(3, "-");
Я получаю номер социального страхования (SSN) из хранилища данных. Пока отправляю его в CRM, я хочу, чтобы он был отформатирован как XXX-XX-XXXX
вместо XXXXXXXXX
.
Это похоже на преобразование простой строки с тире в положениях 4
и 7
. Я новичок в С#, так что лучший способ сделать это?
Ознакомьтесь с методом String.Insert.
string formattedSSN = unformattedSSN.Insert(5, "-").Insert(3, "-");
Для простого, короткого и самостоятельного комментирования решение:
String.Format("{0:000-00-0000}", 123456789)
123456789
, представляющий вашу переменную SSN.
string ssn = "123456789";
string formattedSSN = string.Join("-",
ssn.Substring(0,3),
ssn.Substring(4,2),
ssn.Substring(6,4));
Функция @George, вероятно, более чистая, если SSN хранится как числовое, а не как строка.
Без проверки данных и при условии, что вы получите только 9 символов, я бы пошел с чем-то вроде этого -
return s.Substring(0, 3) + "-" + s.Substring(3, 2) + "-" + s.Substring(5, 4);
Но... Я тоже довольно новый... так что ответ GendoIkari намного лучше.
Вышеуказанный ответ может быть причиной исключения, когда строка не фиксированная.
В моем случае я использовал следующий способ формирования SSN и его работу.
string SSN = "56245789";
if (SSN.Length > 3 && SSN <= 5)
SSN = SSN.Insert(3, "-");
else if (SSN.Length > 5)
SSN = SSN.Insert(5, "-").Insert(3, "-");
Следовательно, SSN получит 562-45-789.
На всякий случай, если это кому-то поможет, вот метод, который я создал для маскировки и форматирования 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);
}