如何将"$ 10.80"
转换为小数?使用正则表达式?
答案 0 :(得分:6)
这可能不是最好的方法,但这里有效:
"$ 10.80".match(/[0-9|\.]+/)[0].to_f
答案 1 :(得分:6)
s = "$ 10.80"
BigDecimal.new s.match(/(\d+\.\d+)/)[1]
将您的值作为BigDecimal返回以保持精度。
答案 2 :(得分:4)
已有多种解决方案,但我想添加
>> "$ 10.80"[/[\d\.]+/].to_f #=> 10.8
答案 3 :(得分:2)
正则表达文盲可能更容易理解的代码:
"$ 10.80".split(' ')[1].to_f
答案 4 :(得分:1)
此解决方案匹配任何浮点数(包括例如“$ .89”)并保留精度:
require 'bigdecimal'
s = "$ 10.80"
puts BigDecimal.new(s.match(/\d*\.?\d+/)[0]).to_s('F') # 10.8
答案 5 :(得分:0)
你甚至可以使用拆分方法。
"$ 10.80".split(' ')[1].to_f