我有一个带有以下模式的字符串
"00:00:30.04,"
哪种方法可以将此字符串解析为浮点数?
最好的, 菲尔
答案 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的子字符串,并根据该字符串返回一个浮点数。 Float
比String.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]