Как я могу проверить, существует ли слово в строке и вернуть false, если это не так, в ruby?
Скажем, у меня есть строка str = "Things to do: eat and sleep."
Как я могу проверить, существует ли "do: " в str, нечувствительный к регистру?
Ответ 1
Вот так:
puts "yes" if str =~ /do:/i
Чтобы вернуть логическое значение (предположительно из метода), сравните результат совпадения с nil:
def has_do(str)
(str =~ /do:/i) != nil
end
Или, если вам не нравится != nil, вы можете использовать !~ вместо =~ и отрицать результат:
def has_do(str)
not str !~ /do:/i
end
Но мне не нравятся двойные отрицания...
Ответ 2
В ruby 1.9 вы можете сделать следующее:
str.downcase.match("do: ") do
puts "yes"
end
Это не совсем то, что вы просили, но я заметил комментарий к другому ответу. Если вы не возражаете использовать регулярные выражения при сопоставлении строки, возможно, есть способ пропустить нижнюю часть, чтобы получить нечувствительность к регистру.