0

我需要从字符串中获取货币。我的价格可以有多种格式。让我们以加元兑美元为例。CAD将以这种方式格式化:

5.00 加元

虽然美元将以这种方式格式化

5.00 美元

该系统还支持欧元和英镑。显然,价格可能会在成千上万。

这是我不成功的尝试:

result = /^([^\$]+)\$/i.exec(price.text());
4

3 回答 3

1

哇-我不确定我是否理解-您只想提取数字(千位,整数和小数部分),而不是货币类型???汇率呢??是否有其他列指示货币类型?只是看起来很奇怪......

但是,如果该列仅包含带有 amnount 和货币指示符的字符串,那么[\d.,]+应该获取数字(以及任何尾随或前导逗号或句点) - 这对您有用吗?

于 2013-10-01T14:58:55.903 回答
1

不要想太多。

/(\d|\.)+/

会拔出号码。

您还可以根据adeneo进行替换以清理它:

price.replace(/[^0-9.]/g, '')

然后parseFloat如果你需要。

于 2013-10-01T15:03:16.727 回答
0

Money通常表示为 [ int, currency] 元组。我的目标是这样的格式。

你的绳子里似乎有一点绒毛。对于$一个。

那么怎么样:

var db_string = "5.00$ CAD"; // or "$5.00 USD" or "€5.00 EUR"
var clean = db_string.replace(/[0-9A-Z ]/g, ""); // removes $ . and euro etc.
var parts = clean.split(" ");
var num = parseInt(parts[0], 10); // amount as int, in cents
var cur = parts[1]; // currency: USD, CAD, EUR etc.
于 2013-10-01T14:58:35.743 回答