0

リストがあります:

key1:this is an{example{of an example}I like} key2:this is another example key3: this is secondary{example{of an example}}

キーを分離し、キーの値を差で比較する必要があるため、取得したい結果は次のとおりです。

{
  :key1 => 'this is an [example[of an example]I like]',
  :key2 => 'this is another example',
  :key3 => 'this is secondary[example[of an example]]'
}

Ruby や Regex でこのようなこと、または同様のことが可能ですか?

4

1 に答える 1

0

どうぞ:

def parse_into_hash(s)
  keys = s.scan(/\w+:/.map{|k| k.chomp(":")}
  values = s.split(/\w+:/).select(&:present?)
  Hash[keys.zip values]
end

これは防弾ではありません。値にコロンがある場合、または値のいずれかが空の文字列である場合は失敗する可能性がありますが、例では機能し、開始する必要があります。必要に応じて、より堅牢にすることができます。

于 2013-03-19T15:17:32.643 に答える