Работа с отрицательными числами в строках - PullRequest
0 голосов
/ 06 декабря 2009

У меня простая, но сложная проблема с математикой.

Следующий код будет брать число из строки (обычно содержащейся в span или div) и вычитать из нее значение 1.

.replace(/(\d+)/g, function(a,n){ return (+n-1); });

Это работает очень хорошо, кроме случаев, когда мы опускаемся ниже нуля. Как только мы добираемся до -1, мы, очевидно, имеем дело с отрицательным вычитанием.

-1 - 1 = -0<br> -0 - 1 = --1

как я могу избежать этого? Скорее всего, у меня тут общая проблема с математикой.

Ответы [ 2 ]

6 голосов
/ 06 декабря 2009

Проблема в том, что ваша функция не рассматривает «-1» как отрицательную - она ​​обрабатывается как дефис, за которым следует положительный 1.

/(-?\d+)/g также захватит ведущий дефис.

2 голосов
/ 06 декабря 2009

Ваш .replace(/(\d+)/g) не захватывает ведущий -. Если вы хотите, чтобы ваше дополнение было правильным, вам понадобится что-то вроде /(-?\d+)/.

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