Ruby将字符串转换为十进制

时间:2011-12-18 09:44:24

标签: ruby regex

如何将"$ 10.80"转换为小数?使用正则表达式?

6 个答案:

答案 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