Как замаскировать строку? - PullRequest
6 голосов
/ 14 марта 2012

У меня есть строка со значением "1131200001103".

Как я могу отобразить это как строку в этом формате "11-312-001103", используя Response.Write (значение)?

Спасибо

Ответы [ 4 ]

14 голосов
/ 14 марта 2012

Любая причина, по которой вы не хотите просто использовать Substring?

string dashed = text.Substring(0, 2) + "-" +
                text.Substring(2, 3) + "-" +
                text.Substring(7);

Или:

string dashed = string.Format("{0}-{1}-{2}", text.Substring(0, 2),
                              text.Substring(2, 3), text.Substring(7));

(я предполагаю, что это преднамеренночто вы пропустили два из 0? Непонятно , какие 0, по общему признанию ...)

Очевидно, вы должны проверить, что строка правильной длины в первую очередь ...

13 голосов
/ 14 марта 2012

В результате получается требуемый результат

string result = Int64.Parse(s.Remove(5,2)).ToString("00-000-000000");

при условии, что вы хотите отбросить 2 символа в позиции 2 первых нулей.

6 голосов
/ 14 марта 2012

Вы можете попробовать регулярное выражение и поместить его в метод расширения ToMaskedString ()

public static class StringExtensions
{
    public static string ToMaskedString(this String value)
    {
        var pattern = "^(/d{2})(/d{3})(/d*)$";
        var regExp = new Regex(pattern);
        return regExp.Replace(value, "$1-$2-$3");
    }
}

Тогда звоните

respne.Write(value.ToMaskedString());
3 голосов
/ 14 марта 2012

Может быть что-то вроде

string result = str.SubString(0, 2) + "-" + str.SubString(2, 3) + "-" + str.SubString(7);

str, являющееся строкой "11312000011103"

...