Ruby 将字符串 ($100.99) 转换为浮点数或 BigDecimal

Ruby convert string ($100.99) to float or BigDecimal

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

我试过 xyz.scan(/\d+/).join().to_i 但那会删除小数点。

您可以使用 $ 作为分隔符拆分字符串

s = "0.99"
s.split('$')[1].to_f # 100.99

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

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

BigDecimal 相同:

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

更多方式

使用 sub 或 gsub

2.1.3 :001 > s = "0.99"
 => "0.99"
2.1.3 :002 > s.sub('$','').to_f
 => 100.99
2.1.3 :003 > s.gsub('$','').to_f
 => 100.99

切片

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

来自 tr

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