2009-12-06 7 views
0

J'ai un problème simple, mais embarrassant, avec Math.Traiter les nombres négatifs dans les chaînes

Le code suivant prendra un nombre à partir d'une chaîne (généralement contenu dans un span ou un div) et en soustraira la valeur de 1.

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

Cela fonctionne très bien, sauf si nous obtenons en dessous de zéro. Une fois que nous arrivons à -1, nous avons évidemment affaire à une soustraction négative.

-1 - 1 = -0
-0 - 1 = --1

comment puis-je éviter cela? Il est probable que j'ai un problème général avec les maths ici.

Répondre

6

Le problème est que votre fonction ne traite pas « -1 » comme négatif un - il est traité comme un trait d'union suivi positif 1.

/(-?\d+)/g capturera un trait d'union de premier plan aussi bien.

2

Votre .replace(/(\d+)/g) ne capture pas le premier -. Si vous voulez que votre addition soit correcte, vous aurez besoin de quelque chose comme /(-?\d+)/.

Questions connexes