在C#中使用自定义千位分隔符

时间:2009-04-15 15:08:30

标签: c# formatting text-formatting

我试图在显示字符串时不使用','char作为千分隔符,而是使用空格代替。我想我需要定义一个自定义文化,但我似乎没有把它弄好。有什么指针吗?

例如:显示1000000为1 000 000而不是1,000,000

(不,String.Replace()不是我想要使用的解决方案:P)

4 个答案:

答案 0 :(得分:66)

我建议您找到一个与您想要的最匹配的NumberFormatInfo(即除了千位分隔符之外它是正确的),在其上调用Clone()然后设置NumberGroupSeparator属性。 (如果您要使用货币格式格式化数字,则需要更改CurrencyGroupSeparator代替/。)将其用作string.Format等来电的格式信息,您应该是精细。例如:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = (NumberFormatInfo)
            CultureInfo.InvariantCulture.NumberFormat.Clone();
        nfi.NumberGroupSeparator = " ";

        Console.WriteLine(12345.ToString("n", nfi)); // 12 345.00
    }
}

答案 1 :(得分:8)

使用不同的千位分隔符创建您自己的NumberFormatInfo(衍生物)。

答案 2 :(得分:5)

有一个稍微简单的Jon Skeet版本:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = new NumberFormatInfo {NumberGroupSeparator = " ", NumberDecimalDigits = 0};

        Console.WriteLine(12345678.ToString("n", nfi)); // 12 345 678
    }
}

可以跳过'nfi'初始化并直接作为参数放入ToString()方法。

答案 3 :(得分:2)

最简单的方式......

num.ToString("### ### ### ### ##0.00")