code: public static int indexOfAnyBut(String str, String searchChars) {
          if (isEmpty(str) || isEmpty(searchChars)) {
              return INDEX_NOT_FOUND;
          }
          int strLen = str.length();
          for (int i = 0; i < strLen; i++) {
              char ch = str.charAt(i);
              boolean chFound = searchChars.indexOf(ch) >= 0;
              if (i + 1 < strLen && CharUtils.isHighSurrogate(ch)) {
                  char ch2 = str.charAt(i + 1);
                  if (chFound && searchChars.indexOf(ch2) < 0) {
                      return i;
                  }
              } else {
                  if (!chFound) {
                      return i;
                  }
              }
          }
          return INDEX_NOT_FOUND;
      }
docs: <p>Search a String to find the first index of any
  character not in the given set of characters.</p>
  
  <p>A <code>null</code> String will return <code>-1</code>.
  A <code>null</code> or empty search string will return <code>-1</code>.</p>
  
  <pre>
  StringUtils.indexOfAnyBut(null, *)            = -1
  StringUtils.indexOfAnyBut("", *)              = -1
  StringUtils.indexOfAnyBut(*, null)            = -1
  StringUtils.indexOfAnyBut(*, "")              = -1
  StringUtils.indexOfAnyBut("zzabyycdxx", "za") = 3
  StringUtils.indexOfAnyBut("zzabyycdxx", "")   = -1
  StringUtils.indexOfAnyBut("aba","ab")         = -1
  </pre>
  
  @param str  the String to check, may be null
  @param searchChars  the chars to search for, may be null
  @return the index of any of the chars, -1 if no match or null input
  @since 2.0