Как осуществить поиск по словам

118
12 апреля 2022, 04:20

Задача: осуществить поиск по словам. Например, есть слово strong (это первый массив), а есть armstrong (это второй массив). Если во втором слове есть первое, то значит выводим первое.

Проблема: начал решать эту задачу через регулярки, но он с таким кодом выводит только "live", хотя как я подразумевал - он первый массив будет сравнивать со вторым.

Ещё для примера:

String a[] = new String[]{ "arp", "live", "strong" };
        String b[] = new String[] { "lively", "alive", "harp", "sharp", "armstrong" };

Код:

public static String[] inArray(String[] array1, String[] array2) {
        for (int i = 0; i < array1.length; i++) {
        Pattern pat = Pattern.compile(array1[i]);
        Matcher mat = pat.matcher(array2[i]);
        while (mat.find()) {
        System.out.println(mat.group());
        }
    }
    return ??;
}
Answer 1

Замените на:

Pattern pat = Pattern.compile(".*" + a[i] + ".*");

".*" + a[i] + ".*" означает, что до и после a[i] может быть от 0 до бесконечности любых символов. Вы же ищите только полностью совпадающие с a[i]. И вообще - вы ищете только в равных по индексу(в массиве) словах. Нужно сделать вложенный цикл:

for (int i = 0; i < a.length; i++) {
    Pattern pat = Pattern.compile(".*" + a[i] + ".*");
    for(int c = 0; c < b.length; c++){
        Matcher mat = pat.matcher(b[c]);
        if (mat.matches()) {
            System.out.println(mat.group());
        }
    }
}
READ ALSO
Scanner в каждом классе - рационально ли?

Scanner в каждом классе - рационально ли?

Возник такой вопросИмеется 5 классов + Main

231
Как сделать условие корректным

Как сделать условие корректным

Вопрос: как изменить код, чтобы он корректно работалОсновная проблема в инициализации массива

199
Как вывести многомерный массив в консоль?

Как вывести многомерный массив в консоль?

Создал многомерный массив (3x5), теперь надо вывести в консольКак можно это сделать?

220