我想將貨幣格式的字符串轉換爲javascript中的浮點數。將貨幣格式的字符串轉換爲js中的浮點數
例如: 「$ 1,000.20」轉換爲浮動1000.20
「USD 1,000.20」轉換爲浮動1000.20
我也有興趣知道如何更換字母說「*」
這是如何實現的?
我想將貨幣格式的字符串轉換爲javascript中的浮點數。將貨幣格式的字符串轉換爲js中的浮點數
例如: 「$ 1,000.20」轉換爲浮動1000.20
「USD 1,000.20」轉換爲浮動1000.20
我也有興趣知道如何更換字母說「*」
這是如何實現的?
你可以從任意的字符串挑出來的數字與正則表達式:
var match= string.match(/[0-9,.]*/);
if (match!==null) {
var amount= parseFloat(match[0].replace(/,/g, '')); // replace , thousands separator
}
但是!由於浮點計算的不準確性,將貨幣金額存儲在浮點類型中通常是不允許的。當然JavaScript 只有爲您提供浮點數,但通過堅持整數(例如美分),您可以獲得精確的計算,達到單位數。
最好的處理錢是使用十進制算術類型。這不是JavaScript中的內置類型,但是這裏是它的an implementation。 (不幸的是,它很重量級......我正在考慮簡單地實現僅僅需要基本算術的瑣碎基礎知識。)
我也很想知道來代替字母字符說「*」再次
正則表達式:
string.replace(/[A-Z]/gi, '*')
(爲ASCII內的「字母」的價值觀如果你需要非ASCII Unicode字母來代替你。必須構建更多涉及的角色之三類... JavaScript沒有內置類爲整個Unicode字符集的元數據。)
使用JavaScript substring()方法去掉字母,然後用解析parseFloat
parseFloat('1,000.20')
parseFloat('1,000.20')
似乎不起作用100%正確。如果在Chrome中執行'parseFloat('1,000.20')',我會得到'1'結果 – crashbus 2017-07-28 07:52:03
這可能是工作:
floatstring=currencystring.replace(/\$/,"");
floatstring=floatstring.replace(/USD/,"");
floatstring=floatstring.replace(/,/,"");
floatstring=floatstring*1;
+1替換函數 – Xinus 2009-10-25 11:07:58
刪除所有非數字符號:
dirty_string.replace (/[^\d.]/g,'')
這將刪除所有字符
var value = string.replace(',', '');
value = value.replace(/[^0-9,.]*/, '');
value = parseFloat(value);
很久以前我做了一個正則表達式來處理各種貨幣...
([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$
看它的結果
,那麼你只需要得到小數部分,刪除所有 「」和 「」 和如果存在與小數部分CONCAT
最終結果變成:
let currency = "R$ -123.324,123,323"
let regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$/igm
let result = regex.exec(currency);
console.log("Regex result: " + result);
let floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : currency.replace(/[^0-9-+]/g, "");
console.log("Final result: " + floatResult);
Codepen:https://codepen.io/nicollaas94/pen/zdOevo?editors=0011
感謝您的好評。我發現我想要一個稍微不同的正則表達式:string.match(/ [0-9,。] +/g) – 2011-01-03 21:01:20