Javascript извлекает номер из строки - PullRequest
4 голосов
/ 12 июня 2009

У меня есть несколько строк, извлеченных из HTML с использованием jQuery.

Они выглядят так:

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

Мне нужно извлечь числовые значения, чтобы рассчитать разницу в цене.

(Итак, я заканчиваю с ≈

var productPriceDiff = DKK 100";

или просто:

var productPriceDiff = 100";)

Может кто-нибудь помочь мне сделать это?

Спасибо, Jakob

Ответы [ 4 ]

10 голосов
/ 12 июня 2009

Сначала вам нужно преобразовать входные цены из строк в числа. Затем вычтите. И вам придется конвертировать результат обратно в формат "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));
5 голосов
/ 12 июня 2009

попробовать:

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

edit: получит цену, включая цифры, запятые и точки. он не проверяет, является ли формат чисел правильным или числа, периоды и т. д. являются смежными. Если вы можете быть более точными в точных определениях чисел, которые вы указали, это поможет.

2 голосов
/ 12 июня 2009

попробуйте также:

var productCurrentPrice = productBeforePrice.match(/\d+(,\d+)?/)[0];
1 голос
/ 12 июня 2009
var productCurrentPrice = parseInt(productBeforePrice.replace(/[^\d\.]+/,''));

Это должно сделать productCurrentPrice фактическим числом, за которым вы следите (если я правильно понимаю ваш вопрос).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...