Сравните некоторые строки (часть предложения) из абзаца - PullRequest
0 голосов
/ 23 января 2019

У меня есть карта,

HashMap<String,String> dataCheck= new HashMap<String,String>();
dataCheck.put("Flag1","Additional Income");
dataCheck.put("Flag2","Be your own boss");
dataCheck.put("Flag3","Compete for your business");

и абзац.

String paragraph = "When you have an additional Income, you can be your
 own boss. So advertise with us and compete for your business. We help 
 you get additional income";

Итак, чего я хочу добиться, так это каждого члена Hashmap, я хочу сравнить его с абзацем и найти несколько повторений. Мое соответствие должно быть следующим:

Флаг1 - 2, Флаг2 - 1, Флаг3 - 1

Итак, в общем, я просто хочу получить представление о том, как я сравниваю определенную строку с другим набором строк.

Обновление: совпадение будет без учета регистра.

1 Ответ

0 голосов
/ 23 января 2019

Вы можете использовать цикл с String.indexOf() для подсчета вхождений.

В следующем коде вы увидите, что мы перебираем наш HashMap и сравниваем каждую запись с нашим paragraph.

    HashMap<String, String> dataCheck = new HashMap<String, String>();
    dataCheck.put("Flag1", "Additional Income");
    dataCheck.put("Flag2", "Be your own boss");
    dataCheck.put("Flag3", "Compete for your business");

    String paragraph = "When you have an additional Income, you can be your own boss. So advertise with us and compete for your business. We help you get additional income";

    // Now, iterate through each entry in the Map
    for (Map.Entry<String, String> entry : dataCheck.entrySet()) {

        // Keep track of the number of occurrences
        int count = 0;

        // After finding a match, we need to increase our index in the loop so it moves on to the next match
        int startingIndex = 0;

        // This will convert the strings to upper case (so our matches are case insensitive
        // It will continue looping until we get an an indexOf == -1 (which means no match was found)
        while ((startingIndex = paragraph.toUpperCase().indexOf(entry.getValue().toUpperCase(), startingIndex)) != -1) {

            // Add to our count
            count++;

            // Move our index position forward for the next loop
            startingIndex++;
        }

        // Finally, print out the total count per Flag
        System.out.println(entry.getKey() + ": " + count);
    }

Вот результат:

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