2010-11-03 2 views

Répondre

36

L'option la plus simple est de supprimer toutes les virgules: parseInt(str.replace(/,/g, ''), 10)

2

Vous pouvez le faire comme ceci:

var value = parseInt("15,678".replace(",", "")); 
+0

votre solution remplacera uniquement la première virgule, pas tous il ne fonctionnera pas pour les nombres> = 1 000 000 –

+0

@ daniel.sedlacek la question était "Je veux convertir la chaîne" 15 678 "en une valeur de 15678". Ma réponse résout ce problème. Je suis pédant ici, bien sûr, mais techniquement correct;) – treeface

8

Une façon est de supprimer tous les virgules avec:

strnum = strnum.replace(/\,/g, ''); 

et puis passer cela à parseInt:

var num = parseInt(strnum.replace(/\,/g, ''), 10); 

Mais vous devez faire attention ici. L'utilisation de virgules comme séparateurs de milliers est une chose culturelle. Dans certaines régions, le numéro 1,234,567.89 serait écrit 1.234.567,89.

+2

'parseInt()' devrait être fourni une base lors de son appel, pour éliminer l'interprétation hexadécimale d'un nombre. –

1

Utilisez un regex pour supprimer les virgules avant l'analyse syntaxique, comme celui-ci

parseInt(str.replace(/,/g,''), 10) 
//or for decimals as well: 
parseFloat(str.replace(/,/g,'')) 

You can test it here.

8

Si vous avez seulement des chiffres et des virgules:

+str.replace(',', '') 

Le + jette la chaîne str en un nombre si possible. Pour que cela soit aussi clair que possible, l'envelopper avec parens:

(+str.replace(',', '')) 

donc, si vous l'utilisez dans une déclaration, il est plus visuellement séparé (+ + x ressemble beaucoup à ++ x):

var num = (+str1.replace(',', '')) + (+str1.replace(',', '')); 

conventions de code Javascript (Voir "plus déroutantes et Minuses", deuxième section du bas):

http://javascript.crockford.com/code.html

+0

votre solution remplacera seulement la première virgule, pas toutes, donc cela ne fonctionnera pas pour les nombres> = 1 000 000 –

Questions connexes