【问题标题】:Numeric Format for No Thousands Separator无千位分隔符的数字格式
【发布时间】:2012-08-27 18:56:24
【问题描述】:

是否有一种数字格式可以生成没有千位分隔符的本地化数字?

 Globalize.format("1000.12", "n?" )

我意识到我可以做到:

Globalize.culture().numberFormat[","]="";

但是我有一些我想要关闭的字段和一些应该打开的字段。例如...如果值为:

1000.123 -> 希望它显示格式为 1000,12 或 1000.12,具体取决于语言环境。但没有千位分隔符。

【问题讨论】:

    标签: jquery-globalization


    【解决方案1】:

    您可以使用“d”格式而不是“n”格式来排除千位分隔符。

    Globalize.format(1000.12, "d");
    

    编辑
    请注意,这仅在您不关心小数部分时才有效。

    如果您关心小数部分,据我所知,您不能排除千位分隔符,除非通过以下方法之一:

    1. 将文化对象中的千位字符设置为空字符串:

      Globalize.culture().numberFormat[","] = "";
      Globalize.format(1000.12, "n");
      

      你可以很容易地把它变成一个实用函数:

      function formatNumberNoThousands(num, format, culture) {
          var numberFormat = Globalize.cultures[culture || Globalize.culture().name].numberFormat,
              thousands = numberFormat[","];
          numberFormat[","] = "";
          try { return Globalize.format(num, format, culture); }
          finally { numberFormat[","] = thousands; }
      }
      
    2. 对格式的字符串结果进行替换:

      Globalize.format(1000.12, "d").replace(new RegExp("\\" + Globalize.culture().numberFormat[","], "g"), "");
      

      这也可以很容易地变成一个实用函数:

      function formatNumberNoThousands(num, format, culture) {
          return Globalize.format(num, format).replace(new RegExp("\\" +  Globalize.culture(culture).numberFormat[","], "g"), "");
      }
      

      使用这种方法,如果您知道格式化结果中永远不会超过一千个字符,您可以删除正则表达式。否则,如果您打算大量使用它或在循环中使用它,您将需要缓存正则表达式并重新使用它。

    【讨论】:

    • 这仅部分有效 - 它会删除小数部分,导致 1000 而不是 1000.12(或 1000,12,具体取决于文化)...
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多