How to convert a locale string (currency) back into a number?
我正在使用
当字符串中有一个EDOCX1[2]时,EDOCX1[1]就会混乱起来。
有没有比通过字符串删除逗号更好的方法来处理这个问题?
如果我最终使用其他货币怎么办?我不能把货币的进出转换成一个美分的表示,这样我就可以做数学,然后回到某个地方吗?
假设您所处的区域设置使用句点作为小数点,则可以使用如下内容:
1 | var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, '')); |
上面使用正则表达式删除除数字和小数之外的所有内容。
小心点。有些国家不像你那样使用逗号和小数!最好是将货币金额保持在浮动变量中,并且只在实际打印时格式化它。
例:我决定在点和逗号分隔符后使用N位数字。
1 2 3 4 5 6 7 8 9 10 11 | Object.defineProperties(Number.prototype,{ locale:{ value:function(n){ n = n||2 return this.toLocaleString('en', { minimumFractionDigits: n, maximumFractionDigits: n }); } } }); |
/从字符串反转为数字/
1 2 3 4 5 6 7 | Object.defineProperties(String.prototype,{ floatLocale:{ value: function(){ return parseFloat(this.replace(/,/g,"")); } } }); |
所以
正如其他人建议的那样,您需要从字符串中删除(
1 | dollarString.split('$')[1].replace(/\,/g,'') * 100 |
如果
1 | dollarString.replace(/\,/g,'').split('$')[1] * 100 |