更好的格式"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。
你差一点就成功了。
试试这个:
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)