Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# 更好的格式设置方法";01234567890“;在;012.345.678-90“;?_C#_.net_String.format - Fatal编程技术网

C# 更好的格式设置方法";01234567890“;在;012.345.678-90“;?

C# 更好的格式设置方法";01234567890“;在;012.345.678-90“;?,c#,.net,string.format,C#,.net,String.format,我有一个关于如何格式化字符串的简单问题 我将这个数字作为字符串“01234567890”,左边是零,需要将其格式化为“012.345.678-90” 我用它解决了它 char[] charArgs = sCPF.ToCharArray(); return String.Format("{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}", charArgs[0], charArgs[1], charArgs[2], charA

我有一个关于如何格式化字符串的简单问题

我将这个数字作为字符串“01234567890”,左边是零,需要将其格式化为“012.345.678-90

我用它解决了它

char[] charArgs = sCPF.ToCharArray();

return String.Format("{0}{1}{2}.{3}{4}{5}.{6}{7}{8}-{9}{10}", 
                     charArgs[0], charArgs[1], charArgs[2], charArgs[3], 
                     charArgs[4], charArgs[5], charArgs[6], charArgs[7], 
                     charArgs[8], charArgs[9], charArgs[10]);
我也试过:

Convert.ToInt64("01234567890").ToString("000.000.000-00")
但这给了我“12345678900000-00”

但如果我也试过这个

Convert.ToInt64("01234567890").ToString("000-000-000-00")
结果是“012-345-678-90”,但这不是我需要的,我需要点(.)

有更好的方法吗


我正在使用.NET2.0。

需要执行
StringName.PadLeft(11)
您就快到了

试试这个:

Convert.ToInt64("01234567890").ToString(@"000\.000\.000-00")

这给了我:
012.345.678-90

如果您不想转换为int以转换回,并且您确定字符串将遵循此格式,您可以这样做:

sCPF = sCPF.Insert(3,".").Insert(7,".").Insert(11,"-");
这应该行得通

Convert.ToInt64("01234567890").ToString("000\\.000\\.000-00")

由于
被定义为自定义格式提供程序,您只需使用
\

即可使用RegExp实现:

private void button1_Click(object sender, EventArgs e)
{
    Regex exp = new Regex(@"(\d{3})(\d{3})(\d{3})(\d{2})");
    string s = "01234567890";
     string newS = exp.Replace(s, new MatchEvaluator(doIt));
     newS += "";
}

private string doIt(Match m)
{
    return m.Groups[1] + "." + m.Groups[2] + "." + m.Groups[3] + "-" + m.Groups[4];
}

但是我不确定它看起来比你的建议更简单:-)

什么是
StringName
?为什么
PadLeft
?这与问题有什么关系?如
stringstringname=“01234567890”在问题的任何地方都不会出现,也不会在你的答案中解释。也不会接近回答问题。我真的快到了。谢谢这将错过前面的零位。