CultureInfo.NumberFormat 隐藏逗号

Posted

技术标签:

【中文标题】CultureInfo.NumberFormat 隐藏逗号【英文标题】:CultureInfo.NumberFormat Hide Comma 【发布时间】:2010-10-05 15:27:09 【问题描述】:

我正在尝试创建一个根本不使用组的 NumberFormat。

我希望所有数字都显示为不带逗号。

例子:

1999 而不是 1,999 2000000 而不是 2,000,000 等等……

不幸的是,我使用的是一个第三方控件,它是一个 NumericEditor,它应用了 CultureInfo 设置来显示逗号。所以我需要创建一个完全不使用 Grouping 的 CultureInfo 实例。

我试过这个:

int[] groupSize = 0;
CultureInfo culture = new CultureInfo("en-US");
culture.NumberFormat.NumberGroupSizes = groupSize;

还有……

 CultureInfo culture = new CultureInfo("en-US");
 culture.NumberFormat.NumberGroupSeparator = String.Empty; // Throws and exception with the 3rd party control

我得到的最接近的是......

 CultureInfo culture = new CultureInfo("en-US");
 culture.NumberFormat.NumberGroupSeparator = " ";

我根本不喜欢这个解决方案,因为它的空格不是逗号,而且看起来很奇怪。

有什么想法吗?

【问题讨论】:

不发布异常的堆栈跟踪是个坏主意。 @Ben f.你为什么不把你的评论放在一个答案表格中,我会接受它,因为它是正确的。 【参考方案1】:

您使用的是什么 3rd-Party 控件,您是否尝试过反射(使用类似 .NET Reflector 的东西)来查看他们如何使用 CultureInfo 类,因为在常规的旧 C# 代码中,设置 NumberFormat.NumberGroupSize = new int[ ]0;与 NumberFormat.NumberGroupSeperator = String.Empty; 一样有效。看来第 3 方控件可能以非标准方式使用 CultureInfo 属性。

【讨论】:

【参考方案2】:

考虑实现custom formatter。

您可以像这样分配您的自定义格式提供程序:

CultureInfo.CurrentCulture.NumberFormat = new MyCustomFormatter();

如果他们(第 3 方控件开发人员)没有实现一些“魔法”,这可能会奏效。

【讨论】:

至少现在已经密封了。

以上是关于CultureInfo.NumberFormat 隐藏逗号的主要内容,如果未能解决你的问题,请参考以下文章

C# CultureInfo NumberFormat NumberDecimalSeparator 问题