Нужно найти в строке множество букв

147
25 августа 2021, 14:20

есть строка "kldm" и в ней нужно проверить, есть ли буквы из "l,p,o,k,j,s,h,r", думаю реализовать .contains, но как сделать, чтобы он не 1 букву искал, и не слово, а "l,p,o,k,j,s,h,r" - все эти буквы.

Answer 1

С помощью регулярного выражения:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class RegexDemo {
    public static void main(String[] args) {
        boolean notFound = true;
        // сюда вставить строку в которой будем искать
        String input = "kldm";
        // сюда вставить регулярное выражение
        String regex = "[lpokjshr]";
        try {
            System.out.println("Проверяемая строка: " + input);
            System.out.println("Регулярное выражение: " + regex);
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(input);
            while (m.find()) {
                notFound = false;
                System.out.println("Найдено [" + m.group() + "] начало в "
                        + (m.start() + 1) + " позиции и конец в " + m.end() + " позиции.");
            }
        } catch (PatternSyntaxException pse) {
            System.err.println("Bad regex: " + pse.getMessage());
            System.err.println("Description: " + pse.getDescription());
            System.err.println("Index: " + pse.getIndex());
            System.err.println("Incorrect pattern: " + pse.getPattern());
        }
        if (notFound) System.out.println("Ничего не найдено!!!");
    }
}

Результат:

Проверяемая строка: kldm

Регулярное выражение: [lpokjshr]

Найдено [k] начало в 1 позиции и конец в 1 позиции.

Найдено [l] начало в 2 позиции и конец в 2 позиции.

READ ALSO
Как сделать фильтр текста по регулярному выражения передаваемому как аргумент?

Как сделать фильтр текста по регулярному выражения передаваемому как аргумент?

Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала...

115
Как реализовать группировку и расчет среднего на основании информации из HashSet?

Как реализовать группировку и расчет среднего на основании информации из HashSet?

Необходимо реализовать метод, который будет рассчитывать среднюю зарплату среди всех сотрудников; выводить список подразделений и среднюю...

232
Некоторые странные моменты связанные с потребностью сделать Нисходящее Приведение (Java)

Некоторые странные моменты связанные с потребностью сделать Нисходящее Приведение (Java)

Мой вопрос написал ниже в комментах программы с достаточно подробным описанием причины возникновения собственно самого вопроса

202
Сравнение символов в массивах

Сравнение символов в массивах

корректно будет использовать оператор "==" для сравнения двух символов из двух массивов? Не адреса в памята а именно совпадение знаков(если...

127