1

私はハッシュの配列を持っています:

arr = [
  {:key1=>"foo one bar", :key2=>"two", :key3=>"three"},
  {:key1=>"four", :key2=>"five", :key3=>"six"},
  {:key1=>"seven", :key2=>"eight", :key3=>"nine"}
]

:key1検索して値を"replaced"if :keyCONTAINS "one"に置き換えたいと思います。

結果の配列は次のようになります。

arr = [
  {:key1=>"replaced", ;key2=>"two", :key3=>"three"},
  {:key1=>"four", ;key2=>"five", :key3=>"six"},
  {:key1=>"seven", ;key2=>"eight", :key3=>"nine"}
]

以前の投稿から使用してみましたが、「ハッシュ内の一致した値を別の値に置き換えるinclude?」で返信されましたが、役に立ちませんでした。

これらは完全に一致します。

arr.each{|item| item[:key1] = "replaced" if item[:key1]=="one"}

意志として:

p arr.each {|x| x[:key1] = "replaced" if x.values_at(:key1) == "one"}

しかし、文字列用語を単に含める必要があります。

4

3 に答える 3

3
arr = [
  {:key1=>"foo one bar", :key2=>"two", :key3=>"three"},
  {:key1=>"four", :key2=>"five", :key3=>"six"},
  {:key1=>"seven", :key2=>"eight", :key3=>"nine"}
]

arr.each {|x| x[:key1] = 'replaced' if x[:key1].include? 'one'}
p arr

出力:

[{:key1=>"replaced", :key2=>"two", :key3=>"three"}, {:key1=>"four", :key2=>"five", :key3=>"six"}, {:key1=>"seven", :key2=>"eight", :key3=>"nine"}]
于 2013-04-20T16:10:33.883 に答える
2

を使用して、文字列内の=~単語を含むパターンを探すことができます。たとえば、次のようになります。one

arr.each{|item| item[:key1] = "replaced" if item[:key1] =~ /one/ }
于 2013-04-20T16:09:26.200 に答える