javascript - 在js中将字符串从货币格式转换为 float

标签 javascript

我想将货币格式的字符串转换为 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/

相关文章:

javascript - jsdoc如何描述返回SAME CLASS变量的静态类方法

javascript - 如何在不重新渲染的情况下使用 React Router 将哈希添加到 url?

javascript - 基于 mapStateToProps 输出重新渲染 connect()ed 组件

javascript - 如何更新状态数组?

javascript - 验证/清理 JSON 数据

javascript - 如何垂直分离Material UI Gridded Paper组件?

javascript - 这是处理 ember 返回用户的安全方法吗?

javascript - 不获取任何数据

javascript - jQuery - 背景图像的视差效果

javascript - 为什么我们使用 functionName : function in javascript return statement