23

我想将字符串“15,678”转换为值 15678。方法parseInt()parseFloat()都为“15,678”返回 15。是否有捷径可寻?

4

5 回答 5

46

最简单的选择是删除所有逗号:parseInt(str.replace(/,/g, ''), 10)

于 2010-11-03T00:52:43.593 回答
11

一种方法是删除所有逗号:

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

然后将传递给 parseInt:

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

但是你需要在这里小心。使用逗号作为千位分隔符是一种文化现象。在某些地区,数字1,234,567.89会写成1.234.567,89

于 2010-11-03T00:53:58.993 回答
8

如果您只有数字和逗号:

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

如果可以,将+字符串str转换为数字。为了尽可能清楚地说明这一点,请用括号括起来:

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

因此,如果您在语句中使用它,它在视觉上会更加独立(+ +x 看起来与 ++x 非常相似):

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

Javascript 代码约定(参见“令人困惑的优缺点”,倒数第二部分):

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

于 2010-11-03T01:00:58.680 回答
2

你可以这样做:

var value = parseInt("15,678".replace(",", ""));
于 2010-11-03T00:53:33.240 回答
2

在解析之前使用正则表达式删除逗号,就像这样

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

你可以在这里测试它

于 2010-11-03T00:54:02.520 回答