code: public static int lastIndexOfAny(final CharSequence str, final CharSequence... searchStrs) {
          if (str == null || searchStrs == null) {
              return INDEX_NOT_FOUND;
          }
          int ret = INDEX_NOT_FOUND;
          int tmp = 0;
          for (final CharSequence search : searchStrs) {
              if (search == null) {
                  continue;
              }
              tmp = CharSequenceUtils.lastIndexOf(str, search, str.length());
              if (tmp > ret) {
                  ret = tmp;
              }
          }
          return ret;
      }
docs: <p>Find the latest index of any of a set of potential substrings.</p>
  
  <p>A {@code null} CharSequence will return {@code -1}.
  A {@code null} search array will return {@code -1}.
  A {@code null} or zero length search array entry will be ignored,
  but a search array containing "" will return the length of {@code str}
  if {@code str} is not null. This method uses {@link String#indexOf(String)} if possible</p>
  
  <pre>
  StringUtils.lastIndexOfAny(null, *)                   = -1
  StringUtils.lastIndexOfAny(*, null)                   = -1
  StringUtils.lastIndexOfAny(*, [])                     = -1
  StringUtils.lastIndexOfAny(*, [null])                 = -1
  StringUtils.lastIndexOfAny("zzabyycdxx", ["ab","cd"]) = 6
  StringUtils.lastIndexOfAny("zzabyycdxx", ["cd","ab"]) = 6
  StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1
  StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1
  StringUtils.lastIndexOfAny("zzabyycdxx", ["mn",""])   = 10
  </pre>
  
  @param str  the CharSequence to check, may be null
  @param searchStrs  the CharSequences to search for, may be null
  @return the last index of any of the CharSequences, -1 if no match
  @since 3.0 Changed signature from lastIndexOfAny(String, String[]) to lastIndexOfAny(CharSequence, CharSequence)