我有一堆使用jQuery从HTML中提取出来的字符串。
它们看起来像这样:
var productBeforePrice = "DKK 399,95";
var productCurrentPrice = "DKK 299,95";
我需要提取数字值以计算价格差异。
(所以我最终得到约≈)
var productPriceDiff = DKK 100";
或者只是:
var productPriceDiff = 100";
)
有人可以帮我做这个吗?
谢谢, Jakob
我有一堆使用jQuery从HTML中提取出来的字符串。
它们看起来像这样:
var productBeforePrice = "DKK 399,95";
var productCurrentPrice = "DKK 299,95";
var productPriceDiff = DKK 100";
或者只是:
var productPriceDiff = 100";
)
有人可以帮我做这个吗?
谢谢, Jakob
首先需要将输入的价格从字符串转换为数字。然后相减。最后将结果转换回"DKK ###,##"格式。下面这两个函数会有所帮助。
var priceAsFloat = function (price) {
return parseFloat(price.replace(/\./g, '').replace(/,/g,'.').replace(/[^\d\.]/g,''));
}
var formatPrice = function (price) {
return 'DKK ' + price.toString().replace(/\./g,',');
}
那么你可以这样做:
var productBeforePrice = "DKK 399,95";
var productCurrentPrice = "DKK 299,95";
productPriceDiff = formatPrice(priceAsFloat(productBeforePrice) - priceAsFloat(productCurrentPrice));
尝试:
var productCurrentPrice = productBeforePrice.replace(/[^\d.,]+/,'');
编辑:这将得到包括数字、逗号和句点在内的价格。它并不验证数字格式是否正确或数字、句点等是否连续。如果您能更精确地定义所期望的确切数字,那会很有帮助。
也可以尝试:
var productCurrentPrice = productBeforePrice.match(/\d+(,\d+)?/)[0];
var productCurrentPrice = parseInt(productBeforePrice.replace(/[^\d\.]+/,''));
如果我理解你的问题正确,那么这应该使productCurrentPrice成为你实际需要的数字。