Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为字符串中的字符使用占位符?_C# - Fatal编程技术网

C# 如何为字符串中的字符使用占位符?

C# 如何为字符串中的字符使用占位符?,c#,C#,我正在尝试使用中提供的解决方案,并且也参考了 基本上,我正在尝试格式化一个社会保险号码。这是上面链接的文章中使用的方法: String.Format(“{0:###-##-####}”, 123456789); 如上图所示传入数字时,这非常有效,但我需要格式化的数字包含在字符串中-因此我基本上是这样做的(这不起作用): 解决我的问题的好方法是什么?您可以将字符串解析为数字类型,然后使用string.Format如: String.Format("{0:###-##-####}", long.P

我正在尝试使用中提供的解决方案,并且也参考了


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

String.Format(“{0:###-##-####}”, 123456789);
如上图所示传入数字时,这非常有效,但我需要格式化的数字包含在字符串中-因此我基本上是这样做的(这不起作用):


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

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

String.Format("{0:###-##-####}", long.Parse("123456789"));
您还可以根据您的数字使用或
int.TryParse
,然后以string.Format格式使用该值

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

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

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

String.Format("{0:###-##-####}", long.Parse("123456789"));
您还可以根据您的数字使用或
int.TryParse
,然后以string.Format格式使用该值

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

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

您可以尝试打印单个字符

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

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

您可以尝试打印单个字符

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

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

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);
}

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);
}

您可以使用Regex.Replace方法

string formatted = Regex.Replace("123456789", @"(.{3})(.{2})(.{4})", "$1-$2-$3");
如果没有那么多数字(或字母),可以使用多个点

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

您可以使用Regex.Replace方法

string formatted = Regex.Replace("123456789", @"(.{3})(.{2})(.{4})", "$1-$2-$3");
如果没有那么多数字(或字母),可以使用多个点

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

如果SSN有字母怎么办?你怎么知道它是SSN?我不确定这是否是一个相关的用例。“基本上,我正在尝试格式化一个社会保险号。”@Lewsterin,我错过了,但是如果OP试图格式化SSN,那么我只能假设它是一个数字,并且需要格式化,如果它已经格式化,那么使用
字符串就没有意义了。格式化
如果SSN有字母怎么办?你怎么知道它是SSN?我不确定这是否是一个相关的用例。“基本上,我正在尝试格式化一个社会保险号码。”@Lewsterin,我错过了,但是如果OP试图格式化SSN,那么我只能假设它是数字并且需要格式化,如果它已经格式化了,那么使用
字符串就没有意义了。Format
是的,即使数字由字母和数字混合而成,它也可以工作。是的,即使数字由字母和数字混合而成,它也可以工作。