当我需要500000时,javascript parseFloat'500,000'返回500

Dan*_*anC 36 javascript parsefloat

如何处理这个很好的方法?

我已经考虑过删除逗号,然后解析为float.

你知道更好/更清洁的方式吗?

谢谢

Jam*_*mes 78

parseFloat( theString.replace(/,/g,'') );
Run Code Online (Sandbox Code Playgroud)

  • @Adam,假设这个数字是100万,"1,000,000",如果你不使用全局标志的正则表达式,只有第一个逗号将被替换 - >"1000,000"`. (28认同)
  • 请不要使用正则表达式.`.replace(',','')` (18认同)
  • @Adam没有理由*不*在这里使用RegEx (7认同)
  • 是的,令人讨厌的是,你可能需要使用regexp来做一个简单的字符串替换,因为可能会出现多次针,但这对你来说是古怪的JavaScript.当针可能包含正则表达式特殊字符并且您不想担心转义的另一种习惯是`s.split(needle).join(replacement)`. (5认同)
  • @Adam - JP的解决方案更具动态性,因为它涵盖了多个逗号. (2认同)

mic*_*cah 15

我不知道为何没有人提出这个表达方式─

parseFloat( theString.replace(/[^\d\.]/g,'') );
Run Code Online (Sandbox Code Playgroud)

删除除句点以外的所有非数字字符.你也不需要自定义函数/循环,这只是矫枉过正.

  • 谢谢!这也处理了“$”。很好的答案:-) (2认同)

Mat*_*chu 14

不.删除逗号.

  • 这不是一个很好的答案,见下面999的答案实际上有所帮助.http://stackoverflow.com/a/3205751/111757 (8认同)
  • @Vicer:严格来说,*999的*答案对*这个*特定问题没有太大的答案:OP已经知道如何从字符串中删除逗号,并询问是否存在其他技术.答案是"不".对于那些*不知道如何删除逗号的人来说,999的答案肯定更有帮助,即使它实际上没有回答原始问题.但是,嘿.由于只有访问此页面的人才会使用谷歌搜索如何用逗号处理数字,他绝对是所有未来观众的更好答案. (2认同)
  • @Matchu不一定,我来找一个非常简洁的答案(我猜,从技术上讲,我有与OP相同的问题).就我而言,你的回答是准确和简洁的练习(OP似乎同意).无论如何,只是对我们中的一些人说"未来的观众",这个答案仍然比999更好(因此我的upvote).我希望如果有人不知道如何替换逗号,他们就会谷歌,并且永远不会看到这个页面.就我而言,虽然我用谷歌搜索,发现这个页面的标题与我的搜索文本非常接近.日Thnx! (2认同)

ken*_*bec 6

您可以使用字符串替换方法,但不能使用正则表达式允许的单行内联.

while(str.indexOf(',')!=-1)str= str.replace(',','');
parseFloat(str);
Run Code Online (Sandbox Code Playgroud)

或者在没有regexp =的情况下制作单个表达式

return parseFloat(str.split(',').join(''));
Run Code Online (Sandbox Code Playgroud)

我会使用正则表达式.