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

Luk*_*Luk 35 c# formatting text-formatting

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

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

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

Jon*_*eet 70

我建议你找到一个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
    }
}
Run Code Online (Sandbox Code Playgroud)


Luc*_*ero 8

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


Inv*_*ard 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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