Javascript从字符串中提取数字

时间:2009-06-12 15:41:18

标签: javascript jquery string numbers extract

我使用jQuery从html中提取了一堆字符串。

他们看起来像这样:

var productBeforePrice = "DKK 399,95";
var productCurrentPrice = "DKK 299,95";

我需要提取数值以计算价格差异。

(所以我≈

var productPriceDiff = DKK 100";

或只是:

var productPriceDiff = 100";

任何人都可以帮我这么做吗?

谢谢, 雅各布

4 个答案:

答案 0 :(得分:10)

首先,您需要将输入价格从字符串转换为数字。然后减去。而且你必须将结果转换回“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));

答案 1 :(得分:5)

尝试:

var productCurrentPrice = productBeforePrice.replace(/[^\d.,]+/,'');

编辑:这将获得包括数字,逗号和句号在内的价格。它不验证数字格式是否正确或数字,句号等是否连续。如果你可以更精确地确定你所描述的确切数字定义,那将会有所帮助。

答案 2 :(得分:2)

尝试:

var productCurrentPrice = productBeforePrice.match(/\d+(,\d+)?/)[0];

答案 3 :(得分:1)

var productCurrentPrice = parseInt(productBeforePrice.replace(/[^\d\.]+/,''));

这应该使productCurrentPrice成为你所追求的实际数字(如果我理解你的问题)。