Задача: осуществить поиск по словам. Например, есть слово 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 ??;
}
Замените на:
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());
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вопрос: как изменить код, чтобы он корректно работалОсновная проблема в инициализации массива
Создал многомерный массив (3x5), теперь надо вывести в консольКак можно это сделать?