无数分隔符的数字格式

时间:2012-08-27 18:56:25

标签: jquery-globalization

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

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

我意识到我能做到:

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

但我有一些领域,我希望它关闭,一些应该在哪里。例如......如果值为:

1000.123 - >希望它显示格式化为1000,12或1000.12,具体取决于区域设置。但没有千位分隔符。

1 个答案:

答案 0 :(得分:4)

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

Globalize.format(1000.12, "d");

修改
请注意,这只有在您不关心小数部分时才有效。

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

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

    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"), "");
    }
    

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