使用Ruby中的正则表达式从散列中查找单词

时间:2013-12-05 01:06:48

标签: ruby-on-rails ruby regex

我正在做Test-First Learn Ruby个问题,对于词典问题,它要求定义一个方法“find”,它将一个字符串作为参数来搜索包含单词的哈希的键并返回密钥值对,字符串匹配密钥。它必须满足这些情况:

it 'finds multiple matches from a prefix and returns the entire entry (keyword + definition)' do
  @d.add('fish' => 'aquatic animal')
  @d.add('fiend' => 'wicked person')
  @d.add('great' => 'remarkable')
  @d.find('fi').should == {'fish' => 'aquatic animal', 'fiend' => 'wicked person'}
end

我对正则表达式的了解并不是很好。我有点不知道该做什么。救命?我认为我可以很好地让它返回键值对,因为字符串键完全匹配,但对于这种部分匹配我很困惑。

1 个答案:

答案 0 :(得分:1)

我不确定你是否真的需要在这里使用regexp。测试意味着该方法将获得一个字符串并根据散列键'前缀进行检查。这可以通过以下方式实现:

def find(string)
  hash.select { |key, value| key.start_with?(string) }
end

此外,Rubular可能是学习和测试正则表达式的好资源