我试图在显示字符串时不使用 ',' 字符作为千位分隔符,而是使用空格。我想我需要定义一种自定义文化,但我似乎没有做对。任何指针?
例如:将 1000000 显示为 1 000 000 而不是 1,000,000
(不,String.Replace()
不是我想使用的解决方案:P)
我试图在显示字符串时不使用 ',' 字符作为千位分隔符,而是使用空格。我想我需要定义一种自定义文化,但我似乎没有做对。任何指针?
例如:将 1000000 显示为 1 000 000 而不是 1,000,000
(不,String.Replace()
不是我想使用的解决方案:P)
我建议你找到一个NumberFormatInfo
最接近你想要的(即它与千位分隔符分开),调用Clone()
它然后设置NumberGroupSeparator
属性。(如果您要使用货币格式来格式化数字,您需要CurrencyGroupSeparator
改为/也进行更改。)将其用作调用string.Format
etc 的格式信息,您应该没问题。例如:
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
}
}
使用不同的千位分隔符创建您自己的NumberFormatInfo (导数)。
Jon Skeet one 有一个稍微简单的版本:
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() 方法中。
最简单的方法...
num.ToString("### ### ### ### ##0.00")