1

テキストと数字を含む行がたくさんあるファイルがあります。各ファイルのテキストは同じままですが、番号が変わります。(これは走行データなので、線は「-アクティブ時間 28:19、-総距離 3.66mi.」などです。)

私がやりたいのは、これらの行の個々の数字を見つけて、「Ran #{distance} in #{time}」のような独自の出力を作成することです。

正規表現を使用して行内のこれらの数値を見つけることはできますが、それらの値を取得して独自の文字列にする方法がわかりません。正規表現が正しいアプローチであるかどうかさえわかりません。私はこのようなことを実行してきました:

if line =~/\d*\.\d*/
found completed = true

しかし、次に何が起こるかわかりません。

私が明確であることを願っています—そしてあなたの助けに前もって感謝します.

4

3 に答える 3

2

要素参照で正規表現を使用して、数値データを取得できます。例えば:

2.0.0-p0 :010 > distance = line[/\d*\.\d*/]
=> "3.66" 
2.0.0-p0 :011 > time = line[/\d*:\d*/]
 => "28:19" 
2.0.0-p0 :012 > puts "Ran #{distance} in #{time}"
Ran 3.66 in 28:19
 => nil
于 2013-06-19T22:45:52.423 に答える
1

出来るよ:

rawlines = <<EOF
- Active Duration 28:19, - Total distance 3.66mi.
- Active Duration 25:12, - Total distance 3.66mi.
- Active Duration 24:10, - Total distance 3.66mi.
- Active Duration 28:21, - Total distance 3.66mi.
- Active Duration 27:19, - Total distance 3.66mi.
EOF

rawlines.scan(/Active Duration (\d++:\d++), - Total distance (\d++(?>\.\d++)?)/) do |dur, dist|
  puts "Ran #{dist} in #{dur}\n"
end
于 2013-06-19T23:15:40.290 に答える