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 隐藏逗号的主要内容,如果未能解决你的问题,请参考以下文章