簡體   English   中英

將字符串格式化為貨幣 REGEX

[英]Format string as currency REGEX

我目前正在嘗試在使用套件腳本 1 在 NetSuite 服務器端顯示之前轉換一些數據。

不幸的是,不能使用toLocaleString

數據 Output 預期的
1000 1000美元 1,000.00 美元
1 1歐元 1.00 歐元
2000000.1 2000000.1GBD 2,000,000.10 GBD

知道我怎么能做到這一點嗎? 主要是想用一個簡單的 function 來做這個

fuction formatThis(str){
  return String(str).replace(/(.)(?=(\d{3})+$)/g, '$1,');
}

如果您的 NetSuite 版本是 2.0,您可能只能訪問 ECMA Script 5.1

這是一個 function 可以在不使用 ECMAScript 2015 功能的情況下進行格式化。 貨幣需要第二個參數。 我在輸入端的示例中看不到任何地方:

 function format(str, currency) { return (str + ".00").replace(/(\.\d)\.00/, "$10").replace(/\.+(\d{0,2}).*/, ".$1 " + currency).replace(/\d(?=(\d{3})+\b)/g, "$&,"); } // Examples: console.log(format("1000", "USD")); console.log(format("1", "EUR")); console.log(format("2000000.1", "GBD"));

您可以提取前導數字,並使用一堆正則表達式格式化貨幣:

 function formatCurrency(str) { return str.replace(/^[0-9\.]+/, function(m) { // extract the leading number return parseInt(Number(m) * 100, 10) // convert the number to cents.toString() // convert back to string.replace(/(..)$/, '.$1') // add dot, eg restore currency from cents.replace(/(.{12})$/, ',$1') // add comma to billion.replace(/(.{9})$/, ',$1') // add comma to million.replace(/(.{6})$/, ',$1') // add comma to thousand + ' '; }); } [ '1000USD', '1EUR', '2000000.1GBD' ].forEach(str => { console.log(str + ' => ' + formatCurrency(str)); });

Output:

1000USD => 1,000.00 USD
1EUR => 1.00 EUR
2000000.1GBD => 2,000,000.10 GBD

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM