我试图在显示字符串时不使用','char作为千分隔符,而是使用空格代替。我想我需要定义一个自定义文化,但我似乎没有把它弄好。有什么指针吗?
例如:显示1000000为1 000 000而不是1,000,000
(不,String.Replace()
不是我想要使用的解决方案:P)
答案 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")