-2

次の繰り返しパターンを持つ文字列を取得します: ラベル (1 つの単語)、コロン、いくつかのテキスト (ほとんど何でも、空であっても)。例えば:

"FileSize: 597262388 Duration_String: 1h 34mn Duration_string3: 01:34:12.564 Source_Duration:  Width: 712 Height: 360"

ラベルと次のテキストに基づいて 2D 配列を作成しようとしています。

[["FileSize", "597262388"], ["Duration_String", "1h 34mn"], ["Duration_string3", "01:34:12.564"], ["Source_Duration", ""],  ["Width", "712"], ["Height", "360"]]

私はこのコードを試しました:

medinfo = "FileSize: 597262388 Duration_String: 1h 34mn Duration_string3: 01:34:12.564 Source_Duration:  Width: 712 Height: 360"
mi = medinfo.split(':')
s = []
mi.each do |x|
    x2 = x.split(/\W+/).last
    x1 = x.gsub(x2, '')
    s << x1
    s << x2
end
mi_pairs = (s[1..-1].each_slice 2).to_a

しかし、すべての場合にうまくいくわけではなく、より単純なルビーの解決策が必要だと感じています。

4

2 に答える 2

1

問題の解決策はありますが、これは問題の別の解決策です。

medinfo = "FileSize: 597262388 Duration_String: 1h 34mn Duration_string3: 01:34:12.564 Source_Duration:  Width: 712 Height: 360"
str = medinfo.gsub(/([a-zA-Z_3]+)(:)/,'\1;')
mi = str.split(';')
s = []
mi.each do |x|
  x2 = x.split(/\W+/).last
  x1 = x.gsub(x2, '')
  s << x1.strip
  s << x2.strip
end
mi_pairs = (s[1..-1].each_slice 2).to_a
于 2013-04-14T16:03:36.100 に答える