更好的格式"01234567890"在“012.345.678-90"

本文关键字:quot 678-90 更好 01234567890 格式 | 更新日期: 2023-09-27 18:18:32

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

我有这个数字作为字符串"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")

但这给了我" 1234567890,0000000 -00"

但是如果我也尝试这个

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

的结果是"012-345-678-90",但这不是我在这种情况下需要的,我需要点(.)。

有更好的方法吗?

我使用的是。net 2.0。

更好的格式"01234567890"在“012.345.678-90"

你差一点就成功了。

试试这个:

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

得到:012.345.678-90

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

sCPF = sCPF.Insert(3,".").Insert(7,".").Insert(11,"-");

我会用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];
}

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

应该可以了

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

由于.被定义为自定义格式提供程序,您只需要用'

转义它

需要做StringName.PadLeft(11)