Jakob Madsen
Jakob Madsen

Reputation:

Javascript extracting number from string

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

Upvotes: 4

Views: 15224

Answers (4)

Patrick McElhaney
Patrick McElhaney

Reputation: 59351

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));

Upvotes: 10

brettkelly
brettkelly

Reputation: 28245

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

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

Upvotes: 1

Keeper
Keeper

Reputation: 3566

try also:

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

Upvotes: 2

Jonathan Fingland
Jonathan Fingland

Reputation: 57197

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.

Upvotes: 5

Related Questions