Java String index of any character in character set
//package com.demo2s; public class Main { public static void main(String[] argv) throws Exception { String str = "demo2s.com"; char[] searchChars = new char[] { 'd', 'e', 'm', 'o', '2', 's' }; System.out.println(indexOfAny(str, searchChars)); }/*from ww w. j a va2 s.c o m*/ /** * <p> * Search a String to find the first index of any character in the given set of * characters. * </p> * * <p> * A <code>null</code> String will return <code>-1</code>. A <code>null</code> * or zero length search array will return <code>-1</code>. * </p> * * <pre> * indexOfAny(null, *) = -1 * indexOfAny("", *) = -1 * indexOfAny(*, null) = -1 * indexOfAny(*, []) = -1 * indexOfAny("zzabyycdxx",['z','a']) = 0 * indexOfAny("zzabyycdxx",['b','y']) = 3 * indexOfAny("aba", ['z']) = -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 */ public static int indexOfAny(String str, char[] searchChars) { if (isEmpty(str) || isArrayEmpty(searchChars)) { return -1; } for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); for (int j = 0; j < searchChars.length; j++) { if (searchChars[j] == ch) { return i; } } } return -1; } /** * <p> * Search a String to find the first index of any character in the given set of * characters. * </p> * * <p> * A <code>null</code> String will return <code>-1</code>. A <code>null</code> * search string will return <code>-1</code>. * </p> * * <pre> * indexOfAny(null, *) = -1 * indexOfAny("", *) = -1 * indexOfAny(*, null) = -1 * indexOfAny(*, "") = -1 * indexOfAny("zzabyycdxx", "za") = 0 * indexOfAny("zzabyycdxx", "by") = 3 * indexOfAny("aba","z") = -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 */ public static int indexOfAny(String str, String searchChars) { if (isEmpty(str) || isEmpty(searchChars)) { return -1; } return indexOfAny(str, searchChars.toCharArray()); } /** * <p> * Find the first index of any of a set of potential substrings. * </p> * * <p> * A <code>null</code> String will return <code>-1</code>. A <code>null</code> * or zero length search array will return <code>-1</code>. A <code>null</code> * search array entry will be ignored, but a search array containing "" will * return <code>0</code> if <code>str</code> is not null. This method uses * {@link String#indexOf(String)}. * </p> * * <pre> * indexOfAny(null, *) = -1 * indexOfAny(*, null) = -1 * indexOfAny(*, []) = -1 * indexOfAny("zzabyycdxx", ["ab","cd"]) = 2 * indexOfAny("zzabyycdxx", ["cd","ab"]) = 2 * indexOfAny("zzabyycdxx", ["mn","op"]) = -1 * indexOfAny("zzabyycdxx", ["zab","aby"]) = 1 * indexOfAny("zzabyycdxx", [""]) = 0 * indexOfAny("", [""]) = 0 * indexOfAny("", ["a"]) = -1 * </pre> * * @param str * the String to check, may be null * @param searchStrs * the Strings to search for, may be null * @return the first index of any of the searchStrs in str, -1 if no match */ public static int indexOfAny(String str, String[] searchStrs) { if ((str == null) || (searchStrs == null)) { return -1; } int sz = searchStrs.length; // String's can't have a MAX_VALUEth index. int ret = Integer.MAX_VALUE; int tmp = 0; for (int i = 0; i < sz; i++) { String search = searchStrs[i]; if (search == null) { continue; } tmp = str.indexOf(search); if (tmp == -1) { continue; } if (tmp < ret) { ret = tmp; } } return (ret == Integer.MAX_VALUE) ? -1 : ret; } /** * <p> * Checks if a String is empty ("") or null. * </p> * * <pre> * isEmpty(null) = true * isEmpty("") = true * isEmpty(" ") = false * isEmpty("bob") = false * isEmpty(" bob ") = false * </pre> * * <p> * NOTE: This method changed in Lang version 2.0. It no longer trims the String. * That functionality is available in isBlank(). * </p> * * @param str * the String to check, may be null * @return <code>true</code> if the String is empty or null */ public static boolean isEmpty(String str) { return str == null || str.length() == 0; } /** * <p> * Checks if an array of primitive chars is empty or <code>null</code>. * </p> * * @param array * the array to test * @return <code>true</code> if the array is empty or <code>null</code> * @since 2.1 */ public static boolean isArrayEmpty(char[] array) { if (array == null || array.length == 0) { return true; } return false; } } /* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */