2016-06-29 4 views
0

私はまだこれに新しいので、私に同行してください。私は部分文字列と部分文字列を保持するハッシュの配列を持っています。ハッシュ値をルックアップするためのRuby配列

substrings = ["sub1", "sub2", "sub3",...etc.] 
hash = {"sub1"=>"string1", "sub2"=>"string2", "sub3"=>"string3"...} 

例えば、ハッシュ値が"ount"=>"country"かもしれません。そして私は"ount"を私の配列から引っ張って調べて、の値として"country"を出力してみたいと思います。私は配列内のすべての部分文字列に対してこれを実行したい。

各部分文字列には、正確に1つの文字列があります。両方のリストはアルファベット順であるため、見つかったときに停止して次のリストに移動することは大丈夫です。私はアイテムの数を見つけることができますが、むしろ反復としてそれを行うので、再利用可能なコードは、それが理にかなっています。

+0

ルック['Array#each'](http: //ruby-doc.org/core-2.2.0/Array.html#method-i-each)と['Hash#[]'](http://ruby-doc.org/core-2.2.0/ Hash.html#method-i-5B-5D)メソッドを使用していて、解決策が必要です。 –

+3

'hash.values_at(* substrings)'が必要な場合があります。 [Hash#values_at](http://ruby-doc.org/core-2.2.0/Hash.html#method-values_at)を参照してください。 'hash = value '、' 'b' => 2、' 'c '=> 3''と '' str = ["b"、 "a" #=> [2、1] '。 Rubyには、 "substrings"という概念はありません。ここでは、hash.values_at(* str)= hash.values_at(* ["b"、 "a"] = hash.values_at( "b"、 "a" ";唯一の"文字列 "あなたが何をしたいのかを説明するために、特定の文字列の文脈における"部分文字列 "を参照することができます。 –

+0

Cary、それはまさに私が探していたものです。 – lissaluck

答えて

-1
substrings = ["sub1", "sub2", "sub3"] 
hash = {"sub1"=>"string1", "sub2"=>"string2", "sub3"=>"string3"} 

あなたが特定の与えられた部分文字列のためにあなたが値を印刷したい場合はサブストリングに

substrings.each do |str| 
    p "value of #{str} is #{hash[str]}" if hash.has_key?(str) 
end 

#output 
"value of sub1 is string1" 
"value of sub2 is string2" 
"value of sub3 is string3" 

の各要素の値を印刷したい場合は

def find_value(str,hash)  
    "value of #{str} is #{hash[str]}" if hash.has_key?(str) 
end 

p find_value("sub1",hash) 

#Output 
"value of sub1 is string1" 
関連する問題