如何将"$ 10.80"
转换为十进制?使用正则表达式吗?
"$ 10.80".match(/[0-9|\.]+/)[0].to_f
s = "$ 10.80"
BigDecimal.new s.match(/(\d+\.\d+)/)[1]
将您的值作为 BigDecimal 返回,以保留精度。
已经有几种解决方案了,但我想添加一个。
>> "$ 10.80"[/[\d\.]+/].to_f #=> 10.8
$
开头,那么只需将其删除,然后简单地使用to_f
即可。
"$ 10.00"[1..-1].to_f
可能更容易理解的正则表达式代码:
"$ 10.80".split(' ')[1].to_f
这个解决方案匹配任何浮点数(包括例如“$ .89”),并保留精度:
require 'bigdecimal'
s = "$ 10.80"
puts BigDecimal.new(s.match(/\d*\.?\d+/)[0]).to_s('F') # 10.8
你甚至可以使用 split 方法。
"$ 10.80".split(' ')[1].to_f