1

次のパターンの文字列があります

"00:00:30.04,"

この文字列をフロートに解析する最もスマートな方法はどれですか?

最高、フィル

4

4 に答える 4

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 を返します。Floatより厳しいString.to_fです。

于 2013-02-04T21:30:19.970 に答える
2
s = "00:00:30.04,"
s.split(/[^\deE\.+-]/).map(&:to_f) # => [0.0, 0.0, 30.04] 
于 2013-02-04T21:23:24.097 に答える
1

区切り文字が常にコロンまたはコンマの場合、次を使用できます。

"00:00:30.04,".split(/:|,/).map(&:to_f) #=> [0.0, 0.0, 30.04]
于 2013-02-04T21:53:32.173 に答える
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]
于 2013-02-04T21:23:06.877 に答える