Melhor maneira de encontrar uma substring em uma string

Estou com um problema em que estou tentando procurar uma substring na string. Essa substring pode ou não estar na string.

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

Duas maneiras que sei se podem ser feitas são:

string.indexOf("how are")regex

Mas, existe outra maneira "otimizada"? O que você teria feito?

O Ruby pode fornecer uma resposta melhor? Como usamos o jRuby, a resposta pode estar em Ruby ou Java.

questionAnswers(6)

yourAnswerToTheQuestion