Как проверить, присутствуют ли определенные символы в другой строке, какие символы неупорядочены?Использование RegEx Java - PullRequest
0 голосов
/ 20 ноября 2018

Как проверить, присутствует ли строка в другой строке в Java, но здесь условия будут такими:

Например:
Строка 1: Panda
Строка2: " a 1 d 22 * ​​1011 * n 333 a 4444 p "

ЗдесьСтрока 2 должна иметь буквы «p», «n», «d» хотя бы один раз и «a» хотя бы дважды.Шаблон должен соответствовать приведенным выше условиям.

Я сделал с регулярным выражением, но я не получил решение.

 public static boolean isContainsAnimal(String message,String animal) {
        String animalPattern=generatePattern("panda");
        Pattern pattern = Pattern.compile(animalPattern);
        Matcher matcher = pattern.matcher(message);
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        if(count>=1){
            return true;
        }else
        {
            return false;
        }

}
public static String generatePattern(String animal){
    String result="";
    for(int i=0;i<animal.length();i++){
        result+="[^"+animal.charAt(i)+"]*"+animal.charAt(i);
    }
    return result;
}

Предложите мне решение этой проблемы.

1 Ответ

0 голосов
/ 20 ноября 2018

Ваша попытка не учитывает различные возможные порядки символов в строке animal.Фактически, для 5 различных символьных строк существует 5 факторных разных порядков.

Можно сгенерировать регулярное выражение со всеми порядками в качестве альтернатив, но результат ... ужасен и неэффективен.

Лучше всего поработать, если повторяются буквы (например, 'a').Затем сгенерируйте регулярное выражение для каждой буквы, используйте «match», чтобы применить каждое и AND, и результаты.

Еще лучшая идея - вообще не использовать регулярные выражения.Они не подходят для этой работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...