是否有任何巧妙的方法可以将“1,112”转换为整数 1112,而不是 1?
我有一个,但不整洁:
"1,112".split(',').join.to_i #=> 1112
是否有任何巧妙的方法可以将“1,112”转换为整数 1112,而不是 1?
我有一个,但不整洁:
"1,112".split(',').join.to_i #=> 1112
这个怎么样?
"1,112".delete(',').to_i
您可能还想确保您的代码正确本地化,或者确保用户习惯了“国际”表示法。例如,“1,112”实际上表示不同国家的不同数字。在德国,它的意思是比一多一点的数字,而不是一千之类的数字。
相应的 Wikipedia 文章位于http://en.wikipedia.org/wiki/Decimal_mark。不过现在好像写得不好。例如作为一个中国人,我不确定这些关于中国千位分隔符的描述来自哪里。
更方便一些
"1,1200.00".gsub(/[^0-9]/,'')
它使“1 200 200”也能正常工作
以下是另一种可行的方法,尽管与其他一些方法一样,它会去除小数位。
a = 1,112
b = a.scan(/\d+/).join().to_i => 1112
我会使用String#tr
:
"1,112".tr(',','').to_i # => 1112
如果有人希望分出的不仅仅是逗号,我喜欢:
"1,200".chars.grep(/\d/).join.to_i
不知道性能,但它比 a 更灵活gsub
,即:
"1-200".chars.grep(/\d/).join.to_i
String count = count.replace(",", "");