我在說的是將一個字符串讀入一個數字,例如什麼是在JavaScript中從美元金額中提取數字的最緊湊,高效和可靠的方法?
"$107,140,946"
--->107140946
"$9.99"
--->9.99
難道還有比
dolstr.replace('$','');
dolstr.replace(',','');
var num = parseInt(dolstr,10);
一個更好的辦法???
我在說的是將一個字符串讀入一個數字,例如什麼是在JavaScript中從美元金額中提取數字的最緊湊,高效和可靠的方法?
"$107,140,946"
--->107140946
"$9.99"
--->9.99
難道還有比
dolstr.replace('$','');
dolstr.replace(',','');
var num = parseInt(dolstr,10);
一個更好的辦法???
使用一個簡單的正則表達式和字符串的replace
功能
parseFloat(dolstr.replace(/[^\d\.]/g, ''))
擊穿
它取代一個字符不是一個數字(0 - 9)的每個實例,而不是句號。請注意,該期限必須以反斜槓轉義。
然後,您需要將函數包裝爲parseFloat
以將字符串轉換爲浮點型。
我只是修復它 –
使用正則表達式簡單得多閱讀和維護
parseFloat(dolstr.replace(/\$|,/g, ""));
你可以把所有這一切都在oneliner:
parseFloat(dolstr.replace('$','').split(",").join(""))
請注意,我不更換第二個,因爲這會刪除第一個','。
假設輸入總是正確的,只保留數字(\d
)和點(\.
)並擺脫其他字符。然後對結果運行parseFloat。
parseFloat(dolstr.replace(/[^\d\.]/g, ''))
不'parseInt()'嘗試返回一個整數嗎? –
我認爲你的意思是''parseFloat()' –
@JamesAMohler我知道,但我認爲它停止解析,如果它發現一個意外的字符 –