2013-12-05 3 views
0

Я задаю вопросы Test-First Learn Ruby, и для вопроса Словаря он просит определить метод «найти», который берет строку в качестве параметра для поиска по клавишам hash, содержащий слова и возвращающие пары значений ключа, строка соответствует ключу. Он должен удовлетворять следующим ситуациям:Поиск слов из хэша с использованием регулярных выражений в Ruby

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

Я не уверен, что вам действительно нужно использовать regexp здесь. Тест подразумевает, что метод получит строку и проверит ее против хеш-ключей «префиксы. Это может быть достигнуто за счет:

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

Кроме того, Rubular может быть хорошим ресурсом для изучения и испытания регулярное_выражение

+0

Чтобы следить за этим ответом, проверьте [официальный Рубиновый Docs, чтобы узнать больше о хэшей] (http://www.ruby-doc.org/core-2.0/Hash.html). – aceofbassgreg

+0

Спасибо, как ни странно, я наткнулся на Rubular, поскольку я пытался это обработать, я в конечном итоге работал с регулярным выражением hash.has_key? (/^# {String}. * /) – Rob

Смежные вопросы