[Javascrpt]轉換數字成含千分位的文字
實務上常常會需要把金額或數量以含有千分位顯示在前端, 像是10000顯示為10,000。
用後端c#可以很簡單處理這樣的文字:
//先取得轉成currency後會產生的CurrencySymbol
var ri = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;
//用string.Format轉成currency後,再把CurrencySymbol取代掉
var currency = string.Format("{0:c}", 100000.01).Replace(ri, "");
但在前端javascript就比較麻煩,這邊提供一個簡易的轉換function
function toCurrency(num){
var parts = num.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
也可以在prototype直接加入一個轉換function使用
if (!Number.prototype.currency) {
Number.prototype.currency = function () {
var parts = this.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.');
return parts.join('.');
};
}
測試結果
第一種方法可以再加上判斷輸入的parameter是否為有效的數字,或是可轉換成數字的文字,比較彈性。
第二種方法則是限定數字才轉換。
用哪種方式就看實際需求。
參考資料
https://stackoverflow.com/questions/14467433/currency-formatting-in-javascript