在String.Format中每两位数后添加逗号

时间:2013-11-23 08:36:00

标签: c# string formatting string-formatting

我试图将数字173910234.23格式化为17,39,10,234.23。这里只有第一个千位分隔符在三位数之后。但之后所有分隔符(,)都在两位数之后。我尝试了以下内容 -

double d = 173910234.23;
Console.WriteLine(string.Format("{0:#,##,##,###.00}", d));

但它会在每三位数173,910,234.23

后以逗号输出

如何使用17,39,10,234.23

来实现格式string.Format

2 个答案:

答案 0 :(得分:8)

数字组由NumberGroupSizes NumberFormatInfo属性定义。因此,相应地修改它,并使用N格式说明符。

double d = 173910234.23;
var culture = new CultureInfo("en-us", true)
{
    NumberFormat =
    {
        NumberGroupSizes = new int[] { 3, 2 }
    }
};
Console.WriteLine(d.ToString("N", culture));

此输出

17,39,10,234.23

<小时/>

感谢@Rawling和@Hamlet,对此有所了解。现在OP获得预期的输出,我也学到了一些东西..

答案 1 :(得分:0)

string output = null;    
string num = Number.ToString();
for(int i = 0; i < num.Length; ++i)
 {
        switch(i)
        case 2:
        case 4:
        case 6:
            output += ",".ToString() + num[i].ToString(); 
        break;
        default:
            output += num[i].ToString(); 
        break:
 }

如果您想使用不同的数字,请将数字替换为您之前要插入逗号的数字的位置(请记住字符串的第一个字符的位置为 0