我想将货币格式的字符串转换为 JavaScript 中的 float 。
例如: '$1,000.20' 转换为 float 1000.20
“1,000.20 美元”转换为 float 1000.20
我也有兴趣知道如何替换字母字符来表示“*”
如何实现?
最佳答案
您可以使用正则表达式从任意字符串中挑选出数字:
var match= string.match(/[0-9,.]*/);
if (match!==null) {
var amount= parseFloat( match[0].replace(/,/g, '') ); // replace , thousands separator
}
但是!由于浮点计算的不准确性,通常不允许以浮点类型存储金额。当然,JavaScript仅为您提供 float ,但通过坚持使用整数(例如分),您可以获得高达奇数千万亿的精确计算。
处理金钱的最好方法是使用十进制算术类型。这不是 JavaScript 中的内置类型,但这里是 an implementation它的。 (不幸的是,它是相当重量级的......我正在考虑为只需要基本算术的琐碎情况编写一个更简单的基础实现。)
I'm also interested to know how to replace alphabetic characters to say '*'
再次正则表达式:
string.replace(/[A-Z]/gi, '*')
(对于 ASCII 中的“字母字符”值。如果您需要替换非 ASCII Unicode 字母,您必须构造一个更复杂的字符类...JavaScript 没有内置的类整个 Unicode 字符集的元数据。)
关于javascript - 在js中将字符串从货币格式转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620621/