用逗号将string转换为整数

有没有简单的方法将“1,112”转换为整数1112而不是1?

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

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

这个怎么样?

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

您可能还需要确保您的代码本地化正确,或确保用户习惯了“国际”符号。 例如,“1,112”实际上是指不同国家的不同号码。 在德国,这意味着这个数字超过了一个,而不是一千个。

相关的维基百科文章在http://en.wikipedia.org/wiki/Decimal_mark 。 这个时候似乎写得不好。 例如作为一个中国人,我不确定中国的这个千分机的描述是从哪里来的。

一些更方便

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

它使“1 200 200”正常工作

我会使用String#tr

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

以下是另一种可以工作的方法,虽然与其他一些方法一样,它会去掉小数位。

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

如果有人正在寻找一个比逗号更多,我是一个迷:

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

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

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