2013-07-17 2 views
2

Мне кажется, что я изобретаю колесо здесь. Все, что я хочу, чтобы принять строку и вставить тир форматировать номер социального обеспечения для отображения:Маскировка текстового кода. Какой-нибудь более короткий путь?

if (maskedText.Length <= 3) 
{ 
    text = maskedText; 
} 
else 
{ 
    text = maskedText.Substring(0, 3) + "-"; 

    if (maskedText.Length <= 5) 
    { 
     text += maskedText.Substring(3, maskedText.Length - 3); 
    } 
    else 
    { 
     text += maskedText.Substring(3, 2) + "-" 
       + maskedText.Substring(5, maskedText.Length - 5); 
     if (text.Length > 11) 
     // Trim to 11 chars - this is all for SSN 
     text = text.Substring(0, 11); 

    } 
} 

Я делаю это для пользовательского элемента управления в Silverlight. Интересно, есть ли встроенная библиотека или функция ant, которая сделает это? Я не хотите добавить какие-либо зависимости (размер загружаемого файла)

ответ

0

Все, что вам нужно сделать, это вставить некоторые черточки ...

text = maskedText.Insert(5, "-").Insert(3, "-"); 

EDIT: хорошо это только немного чище, чем выше код ...

if (maskedText.Length > 9) 
     maskedText = maskedText.Substring(0, 9); 
    if (maskedText.Length > 5) 
     maskedText = maskedText.Insert(5, "-"); 
    if (maskedText.Length > 3) 
     maskedText = maskedText.Insert(3, "-"); 
    text = maskedText; 

Если бы это было число, которое вы могли бы сделать это ... но, к сожалению, нет простого формата оператора сделать это с помощью строки.

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

Это не работает, поскольку он не обрабатывает сценарии с maskedText.Length! = 9. Моих форматов кода и вставляет черточки в зависимости от размера строки – katit

+0

... Правого происходит слишком быстро ... Вы проверка строка также. Прочтите секунду. – Kevin

+0

Мне нравится это лучше, чем мой путь. Благодаря! – katit