android/guava/src/com/google/common/base/CharMatcher.java
public int indexIn(CharSequence sequence, int start) {
    int length = sequence.length();
    checkPositionIndex(start, length);
    for (int i = start; i < length; i++) {
      if (matches(sequence.charAt(i))) {
        return i;
      }
    }
    return -1;
  }
public int indexIn(CharSequence sequence, int start) {
    int length = sequence.length();
    checkPositionIndex(start, length);
    for (int i = start; i < length; i++) {
      if (matches(sequence.charAt(i))) {
        return i;
      }
    }
    return -1;
  }
public int indexIn ( CharSequence sequence , int start ) { int length = sequence . length ( ) ; checkPositionIndex ( start , length ) ; for ( int i = start ; i < length ; i ++ ) { if ( matches ( sequence . charAt ( i ) ) ) { return i ; } } return - 1 ; }
Returns the index of the first matching BMP character in a character sequence, starting from a
given position, or {@code -1} if no character matches after that position.

<p>The default implementation iterates over the sequence in forward order, beginning at {@code
start}, calling {@link #matches} for each character.

@param sequence the character sequence to examine
@param start the first index to examine; must be nonnegative and no greater than {@code
sequence.length()}
@return the index of the first matching character, guaranteed to be no less than {@code start},
or {@code -1} if no character matches
@throws IndexOutOfBoundsException if start is negative or greater than {@code
sequence.length()}
Returns the index of the first matching BMP character in a character sequence starting from a given position or { @code - 1 } if no character matches after that position .