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
是的,即使数字由字母和数字混合而成,它也可以工作。是的,即使数字由字母和数字混合而成,它也可以工作。