Проверьте, содержит ли предложение определенные слова - PullRequest
3 голосов
/ 25 марта 2020

У меня есть такое предложение:

I`ve got a Pc

И набор слов:

Hello
world
Pc
dog

Как проверить, содержит ли предложение какое-либо из этих слов? В этом примере у меня будет совпадение с Pc.

Вот что я получил до сих пор:

public class SentenceWordExample {
    public static void main(String[] args) {
        String sentence = "I`ve got a Pc";
        String[] words = { "Hello", "world", "Pc", "dog" };

       // I know this does not work, but how to continue from here?
       if (line.contains(words) {
            System.out.println("Match!");
       } else {
            System.out.println("No match!");
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Я бы поточил массив, а затем проверил, содержит ли строка какой-либо из его элементов:

if (Arrays.stream(stringArray).anyMatch(s -> line.contains(s)) {
    // Do something...
1 голос
/ 25 марта 2020

Я предпочитаю использовать подход регулярного выражения здесь с чередованием:

String line = "I`ve got a Pc";
String[] array = new String[2];
array[0] = "Example sentence";
array[1] = "Pc";
List<String> terms = Arrays.asList(array).stream()
    .map(x -> Pattern.quote(x)).collect(Collectors.toList());
String regex = ".*\\b(?:" + String.join("|", terms) + ")\\b.*";
if (line.matches(regex)) {
    System.out.println("MATCH");
}

Точное регулярное выражение, которое генерирует приведенный выше фрагмент:

.*\b(?:Example sentence|Pc)\b.*

То есть мы формируем чередование содержит все ключевые слова, которые мы хотим найти во входной строке. Затем мы используем это регулярное выражение с String#matches.

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