Ruby将字符串($ 100.99)转换为float或BigDecimal

时间:2015-01-10 01:29:55

标签: ruby regex

我正在捕获页面对象“$ 100.99”作为字符串。有没有办法将它转换为浮点数或BigDecimal为“100.99”?

我尝试了xyz.scan(/\d+/).join().to_i但删除了小数。

3 个答案:

答案 0 :(得分:4)

从字符串中删除to_f后,您可以使用$方法:

'$100.99'.delete('$').to_f
# => 100.99

BigDecimal相同:

require 'bigdecimal'
BigDecimal.new('$100.99'.delete('$'))
# => 100.99

答案 1 :(得分:1)

您可以使用$作为分隔符

来拆分字符串
s = "$100.99"
s.split('$')[1].to_f # 100.99

答案 2 :(得分:1)

更多方式

使用sub或gsub

执行此操作
2.1.3 :001 > s = "$100.99"
 => "$100.99"
2.1.3 :002 > s.sub('$','').to_f
 => 100.99
2.1.3 :003 > s.gsub('$','').to_f
 => 100.99

by slice

2.1.3 :001 > s = "$100.99"
 => "$100.99"
2.1.3 :002 > s.slice! '$'
 => "$"
2.1.3 :003 > p s
"100.99"
 => "100.99"

by tr

2.1.3 :011 > s = "$100.99"
 => "$100.99"
2.1.3 :012 > s.tr('$','')
 => "100.99"