【javascript】數字格式化--金錢

在js中有許多種方式能夠將逗號作爲千位分隔符把整數進行格式化。

最簡單的方式就是利用String.prototype.replace()方法,只需使用以下兩個參數即可。

regular expression: (?=(\d{3})+(?!\d))
replacement value: $1,

使用正則表達式去做,然後將要匹配的數字使用$1,進行替換了。這個$1是一個特殊的替換字符,它保存第一個帶圓括號的子串(在我們的例子裏,它是匹配的數字)。逗號字符是我們的分隔符。

例子:

function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}

console.info(formatNumber(2665)) // 2,665
console.info(formatNumber(102665)) // 102,665
console.info(formatNumber(111102665)) // 111,102,665

當然此方法也適用於雙精度數字。

console.info(formatNumber(1240.5)) // 1,240.5
console.info(formatNumber(1000240.5)) // 1,000,240.5

currency formatting --做了一點小改動

function currencyFormat(num) {
  return '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}

console.info(currencyFormat(2665)) // $2,665.00
console.info(currencyFormat(102665)) // $102,665.00

對於currency formatting 來說,利用了Number.prototype.toFixed()將數字轉換爲保留兩位的。

如果貨幣格式需要區域性,也可以再做點小改動。

function currencyFormatDE(num) {
  return (
    num
      .toFixed(2) // always two decimal digits
      .replace('.', ',') // replace decimal point character with ,
      .replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.') + ' €'
  ) // use . as a separator
}

console.info(currencyFormatDE(1234567.89)) // output 1.234.567,89 €

 

原文: https://blog.abelotech.com/posts/number-currency-formatting-javascript/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章