如何在字符串中使用占位符?

时间:2014-03-24 15:07:32

标签: c#

我正在尝试使用this answer中提供的解决方案,并且还引用了this article

基本上,我正在尝试格式化社会安全号码。这是上面链接的文章中使用的方法:

String.Format(“{0:###-##-####}”, 123456789);

如上所示传入数字时效果很好,但我需要格式化的数字包含在字符串中 - 所以我基本上这样做(这不起作用):

String.Format(“{0:###-##-####}”, "123456789");

解决问题的好方法是什么?

4 个答案:

答案 0 :(得分:3)

您可以将字符串解析为数字类型,然后使用string.Format,如:

String.Format("{0:###-##-####}", long.Parse("123456789"));

您还可以根据您的号码使用long.TryParseint.TryParse,然后在string.Format中使用该值。

long number;
string str = "123456789";
if (!long.TryParse(str, out number))
{
    //invalid number
}

string formattedStr = String.Format("{0:###-##-####}", number);

答案 1 :(得分:1)

您可以使用Regex.Replace方法

string formatted = Regex.Replace("123456789", @"(.{3})(.{2})(.{4})", "$1-$2-$3");

如果你没有那么多数字(或字母),你可以使用多个点。

string formatted = Regex.Replace("123456789", @"(...)(..)(....)", "$1-$2-$3");

答案 2 :(得分:0)

您可以尝试打印单个字符

 string.Format("{0}{1}{2}", "123".ToCharArray().Cast<object>().ToArray()) 

修改此代码以支持SSN的可变长度(如果有必要 - 在运行时构建格式字符串)。

答案 3 :(得分:0)

SSN通常存储在varchar中。如果是这样,你可以使用这种实用方法。

public static string FormatSSN(string ssn)
{
    if (String.IsNullOrEmpty(ssn))
        return string.Empty;

    if (ssn.Length != 9)
        return ssn;

    string first3 = ssn.Substring(0, 3);
    string middle2 = ssn.Substring(6, 2);
    string last4 = ssn.Substring(5, 4);

    return string.Format("{0}-{1}-{2}", first3, middle2, last4);
}