Search code examples
javastringsubstringcontains

Better way to detect if a string contains multiple words


I am trying to create a program that detects if multiple words are in a string as fast as possible, and if so, executes a behavior. Preferably, I would like it to detect the order of these words too but only if this can be done fast. So far, this is what I have done:

if (input.contains("adsf") && input.contains("qwer")) {
    execute();          
}

As you can see, doing this for multiple words would become tiresome. Is this the only way or is there a better way of detecting multiple substrings? And is there any way of detecting order?


Solution

  • Editors note: Despite being heavily upvoted and accepted, this does not function the same as the code in the question. execute is called on the first match, like a logical OR.

    You could use an array:

    String[] matches = new String[] {"adsf", "qwer"};
    
    bool found = false;
    for (String s : matches)
    {
      if (input.contains(s))
      {
        execute();
        break;
      }
    }
    

    This is efficient as the one posted by you but more maintainable. Looking for a more efficient solution sounds like a micro optimization that should be ignored until proven to be effectively a bottleneck of your code, in any case with a huge string set the solution could be a trie.