Javascript extracting number from string

戏子无情 提交于 2019-12-17 19:52:09

问题


I have a bunch of strings extracted from html using jQuery.

They look like this:

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

I need to extract the number values in order to calculate the price difference.

(So I wend up with ≈

var productPriceDiff = DKK 100";

or just:

var productPriceDiff = 100";)

Can anyone help me do this?

Thanks, Jakob


回答1:


First you need to convert the input prices from strings to numbers. Then subtract. And you'll have to convert the result back to "DKK ###,##" format. These two functions should help.

var priceAsFloat = function (price) {  
   return parseFloat(price.replace(/\./g, '').replace(/,/g,'.').replace(/[^\d\.]/g,''));
}

var formatPrice = function (price) {  
   return 'DKK ' + price.toString().replace(/\./g,',');
}

Then you can do this:

var productBeforePrice = "DKK 399,95"; 
var productCurrentPrice = "DKK 299,95";
productPriceDiff = formatPrice(priceAsFloat(productBeforePrice) - priceAsFloat(productCurrentPrice));



回答2:


try:

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

edit: this will get the price including numbers, commas, and periods. it does not verify that the number format is correct or that the numbers, periods, etc are contiguous. If you can be more precise in the exact number definitions you expcet, it would help.




回答3:


try also:

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



回答4:


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

That should make productCurrentPrice the actual number you're after (if I understand your question correctly).



来源:https://stackoverflow.com/questions/987382/javascript-extracting-number-from-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!