【发布时间】:2012-07-13 08:41:15
【问题描述】:
有没有什么巧妙的方法可以将“1,112”转换为整数 1112,而不是 1?
我有一个,但不整齐:
"1,112".split(',').join.to_i #=> 1112
【问题讨论】:
标签: ruby integer data-conversion
有没有什么巧妙的方法可以将“1,112”转换为整数 1112,而不是 1?
我有一个,但不整齐:
"1,112".split(',').join.to_i #=> 1112
【问题讨论】:
标签: ruby integer data-conversion
这个怎么样?
"1,112".delete(',').to_i
【讨论】:
您可能还想确保您的代码正确本地化,或者确保用户习惯了“国际”表示法。例如,“1,112”实际上表示不同国家的不同数字。在德国,它的意思是比一多一点的数字,而不是一千之类的数字。
相应的维基百科文章位于http://en.wikipedia.org/wiki/Decimal_mark。不过现在好像写得不好。例如作为一个中国人,我不确定这些关于中国千位分隔符的描述来自哪里。
【讨论】:
更方便一些
"1,1200.00".gsub(/[^0-9]/,'')
它使“1 200 200”也能正常工作
【讨论】:
'1,1200.00'.gsub(/[^0-9\.]/,'').to_f。
"1,1200.00" 转换为"1120000"?您不只是想替换,(或者,取决于语言环境,.)吗?此外,这不会将其转换为整数或浮点数,只是一个没有分隔符的字符串。
以下是另一种可行的方法,尽管与其他一些方法一样,它会去除小数位。
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
不知道性能,但它比gsub 更灵活,即:
"1-200".chars.grep(/\d/).join.to_i
【讨论】:
String count = count.replace(",", "");
【讨论】: