2012-08-27 122 views
3

是否有一個數字格式可以產生一個沒有千位分隔符的本地數字?千位分隔符的數字格式

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

我知道我可以做的:

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

但我有一些領域,我想它關閉,一些地方應該是。例如...如果值是:

1000.123 - >希望它顯示格式爲1000,12或1000.12取決於區域..但沒有千位分隔符。

回答

4

您可以使用「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"), ""); 
    } 
    

    通過這種方法,如果你知道永遠不會有更多的格式化結果中的數千個字符可以刪除正則表達式。否則,如果你計劃在循環中使用它或者在循環中使用它,你需要緩存regexp並重新使用它。

+0

這只是部分的作品 - 它會掉落導致'1000',而不是'1000.12'(或'1000,12'取決於文化)的小數部分... – Krease

+0

@克里斯更新我的答案,以反映。 – Tony

+0

真棒 - 非常有用的更新:) – Krease