【问题标题】:CultureInfo.NumberFormat Hide CommaCultureInfo.NumberFormat 隐藏逗号
【发布时间】: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.你为什么不把你的评论放在一个答案表格中,我会接受它,因为它是正确的。

标签: c# cultureinfo number-formatting


【解决方案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 方控件开发人员)没有实现一些“魔法”,这可能会奏效。

    【讨论】:

    • 至少现在已经密封了。
    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多