Лучший способ найти подстроку в строке

У меня проблема, когда я пытаюсь найти подстроку в строке. Эта подстрока может или не может быть в строке.

str = "hello how are you?"
substr = "how are"

Два способа, которые я знаю, если это можно сделать, это:

string.indexOf("how are")регулярное выражение

Но есть ли другой "оптимизированный" способ? Что бы вы сделали?

Может ли Ruby дать лучший ответ? Поскольку мы используем jRuby, ответ может быть на Ruby или Java.