Как проверить, имеется ли подстрока в строке

321
01 июня 2017, 07:38

Я не смог четко сформулировать вопрос. Но тем не менее вот:

Например, я имею строку "синхрофазотрон" и подстроку "схрон". Функция должна вернуть true, так как данную подстроку можно получить, если пропускать некоторые символы. Суть в том, что нужно сохранить очередность, подстроки хранятся в массиве строк. Есть ли в Java встроенные функции, которые смогут это сделать? У меня была идея, преобразовать подстроку в регулярное выражение, что-то типа "с*х*р*о*н" и использовать matches().

UPD:

По поводу регулярных выражений. Преобразование строки в регулярное выражение и использовать matches() не так уж и трудно реализовать. Но что если у тебя массив подстрок насчитывает больше сотни тысяч элементов, и некоторые из них могут достигать в длине 20 символов?

Answer 1

Встроенных нет, но реализовать не сложно:

public static boolean containsSparse(String string, String substring) {
    int index = 0;
    for (char character : substring.toCharArray()) {
        index = string.indexOf(character, index);
        if (index == -1)
            return false;
    }
    return true;
}
Answer 2

Итерируем и проверяем:

public static boolean containsSequence(String string, String substring) {
    int lastIndex = 0;
    for (int i = 0; i < substring.length(); i++) {
        int index = string.substring(lastIndex).indexOf(substring.charAt(i));
        if (index == -1)
            return false;
        lastIndex = lastIndex + index;
    }
    return true;
}
READ ALSO
Какой View передаётся параметром в onClick?

Какой View передаётся параметром в onClick?

Есть у нас кнопкаМы задаём ей onClick (назовём его так же — onClick)

249
req.getparameter возращает null при работе с файлами

req.getparameter возращает null при работе с файлами

Итак есть у меня jsp в которой есть формаВ форму человек вводит данные и они отправляются на обработку сервлету

287
Почему не находится файл?

Почему не находится файл?

Метод следующий:

264
Android: как приводить наследника от Floating Action Button

Android: как приводить наследника от Floating Action Button

Хочу унаследоваться от Floating Action Button в отдельный класс, чтобы определить в этом классе всё, что связано в этой кнопкой

185