如何从字符串模式解析浮点数

时间:2013-02-04 21:19:50

标签: ruby parsing

我有一个带有以下模式的字符串

"00:00:30.04,"

哪种方法可以将此字符串解析为浮点数?

最好的, 菲尔

4 个答案:

答案 0 :(得分:2)

s = "00:00:30.04,"
s.split(/[^\deE\.+-]/).map(&:to_f) # => [0.0, 0.0, 30.04] 

答案 1 :(得分:2)

p "00:00:30.04,"[6,5].to_f # 30.04
p Float("00:00:30.04,"[6,5]) # 30.04

p "abcdefg"[6,5].to_f # 0.0
p Float("abcdefg"[6,5]) #ArgumentError

基本上:从位置6开始,长度为5的子字符串,并根据该字符串返回一个浮点数。 FloatString.to_f更严格。

答案 2 :(得分:1)

那里有3个号码。拆分它们,只需在每个字符串上调用#to_f(意思是“浮动”)。

string = "00:00:30.04,"
strings = string.split ":"
numbers = strings.map { |s| s.to_f }
numbers # => [0.0, 0.0, 30.04]

答案 3 :(得分:1)

如果分隔符始终为冒号或逗号,则可以使用以下命令:

"00:00:30.04,".split(/:|,/).map(&:to_f) #=> [0.0, 0.0, 30.04]