将逗号转换为整数

时间:2012-07-13 08:41:15

标签: ruby integer data-conversion

是否有任何简洁的方法将“1,112”转换为整数1112,而不是1?

我有一个,但不是很整洁:

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

7 个答案:

答案 0 :(得分:171)

这个怎么样?

 "1,112".delete(',').to_i

答案 1 :(得分:5)

您可能还需要确保代码正确本地化,或确保用户习惯使用“国际”表示法。例如,“1,112”实际上意味着不同国家的不同数字。在德国,它意味着数字略高于一,而不是一千个。

相应的维基百科文章位于http://en.wikipedia.org/wiki/Decimal_mark。虽然此时似乎写得不好。例如,作为一个中国人,我不确定这些关于中国千分离器的描述来自何处。

答案 2 :(得分:4)

更方便一些

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

它使“1 200 200”正常工作

答案 3 :(得分:2)

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

a = 1,112
b = a.scan(/\d+/).join().to_i => 1112

答案 4 :(得分:1)

我会使用String#tr

"1,112".tr(',','').to_i # => 1112

答案 5 :(得分:1)

如果有人想要提供的不仅仅是逗号,我是粉丝:

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

关于性能的不知道,但它比gsub更灵活,即:

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

答案 6 :(得分:0)

String count = count.replace(",", "");