public static int lastIndexOfAny(CharSequence str, CharSequence... searchStrs) {
        if (str == null || searchStrs == null) {
            return INDEX_NOT_FOUND;
        }
        int sz = searchStrs.length;
        int ret = INDEX_NOT_FOUND;
        int tmp = 0;
        for (int i = 0; i < sz; i++) {
            CharSequence search = searchStrs[i];
            if (search == null) {
                continue;
            }
            tmp = CharSequenceUtils.lastIndexOf(str, search, str.length());
            if (tmp > ret) {
                ret = tmp;
            }
        }
        return ret;
    }
<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)
android/android_framework/base/src/main/java/lang3/StringUtils.java