Я предположил, что все слова, имеющие желаемое свойство, должны возвращаться в массиве, а не только в первом таком слове.Вопрос не ясен по этому поводу, что отражено в разных ответах.
def strange_words(words, begins_with)
words.grep /\A#{begins_with}/
end
words = ["eating", "period", "value", "earth", "vortex", "evenly"]
strange_words(words, "v")
#=> ["value", "vortex"]
strange_words(words, "ea")
#=> ["eating", "earth"]
strange_words(words, "z")
#=> []
См. Enumerable # grep .Регулярные выражения гласят: «соответствует началу строки (\A
), за которым следует строка, которая является значением begins_with
».
Если будет возвращено только первое совпадение, один из вариантов будетсделать grep
ленивым перечислителем, чтобы остановить поиск после того, как найдено первое совпадение:
def strange_words(words, begins_with)
words.lazy.grep(/\A#{begins_with}/).first
end
strange_words(words, "v")
#=> "value"