C# 更好的格式设置方法";01234567890“;在;012.345.678-90“;?
我有一个关于如何格式化字符串的简单问题 我将这个数字作为字符串“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
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”代码>在问题的任何地方都不会出现,也不会在你的答案中解释。也不会接近回答问题。我真的快到了。谢谢这将错过前面的零位。