96

是否有任何巧妙的方法可以将“1,112”转换为整数 1112,而不是 1?

我有一个,但不整洁:

"1,112".split(',').join.to_i #=> 1112
4

7 回答 7

179

这个怎么样?

 "1,112".delete(',').to_i
于 2012-07-13T08:44:03.290 回答
6

您可能还想确保您的代码正确本地化,或者确保用户习惯了“国际”表示法。例如,“1,112”实际上表示不同国家的不同数字。在德国,它的意思是比一多一点的数字,而不是一千之类的数字。

相应的 Wikipedia 文章位于http://en.wikipedia.org/wiki/Decimal_mark。不过现在好像写得不好。例如作为一个中国人,我不确定这些关于中国千位分隔符的描述来自哪里。

于 2014-05-14T13:11:21.023 回答
4

更方便一些

"1,1200.00".gsub(/[^0-9]/,'') 

它使“1 200 200”也能正常工作

于 2012-07-13T08:48:09.520 回答
2

以下是另一种可行的方法,尽管与其他一些方法一样,它会去除小数位。

a = 1,112
b = a.scan(/\d+/).join().to_i => 1112
于 2014-12-12T19:51:40.173 回答
1

我会使用String#tr

"1,112".tr(',','').to_i # => 1112
于 2014-01-17T18:52:51.743 回答
1

如果有人希望分出的不仅仅是逗号,我喜欢:

"1,200".chars.grep(/\d/).join.to_i

不知道性能,但它比 a 更灵活gsub,即:

"1-200".chars.grep(/\d/).join.to_i
于 2016-06-01T03:16:01.320 回答
0
String count = count.replace(",", "");
于 2020-07-08T14:20:14.247 回答