2

私は関係を持つハッシュを持っていkeys => meaningます。このハッシュのさまざまな要素は次のとおりです。

"fish" => "aquatic animal"
"fiend" => "bad person"
"great" => "remarkable"

この関数を使用すると、定義とともに" " と " "find("fi")の両方が返されるような関数 find を作成する必要があります。したがって、出力は次のようになります。fishfiend

"fish" => "aquatic animal"
"fiend" => "bad person"

正規表現と Ruby は初めてです。

4

2 に答える 2

5
  hash.select{ |k,v| k.start_with? pattern }
于 2012-07-23T21:29:07.213 に答える
3

あなたはそれを単一の表現として行うことができます:

hash.select { |key, value| key.start_with? prefix }

または、Ruby 1.8を使用している場合:

hash.reject { |key, value| not key.start_with? prefix }

例:

{'foo' => 1, 'bar' => 2, 'baz' => 3}.select { |key, value| key.start_with? 'f' } # {'foo' => 1}
{'foo' => 1, 'bar' => 2, 'baz' => 3}.select { |key, value| key.start_with? 'b' } # {'bar' => 2, 'baz' => 3}

selectブロック内の条件に一致しないペアのみを保持します。(明らかな種類)で始まるstr.start_with? prefix場合はtrueを返します。strprefix

1.8コードには少し厄介な点があります-reject代わりに、selectを実行しています。からの結果を否定する必要があり#start_with?ます。その理由は、Ruby 1.8ではペアの配列を返すのHash#rejectに対しHash、を返すためです。Hash#select

于 2012-07-23T21:25:53.490 に答える