Как получить индексы всех вхождений слов в строке? - PullRequest
0 голосов
/ 06 марта 2019

Я хочу получить индексы всех вхождений string_to_be_search

Введите:

String line="hello this is prajakta , how are you?? hello this is prajakta!"
String text_to_search= "hello this is prajakta"

Здесь вхождения text_to_search равны 2, поэтому мне нужен список начальных индексов

Выход:

List l=[0,39]

Также я попробовал код ниже

 public List getIndexesOfMultipleOccuredString(String originalString,String textToSearch) {
    int i, last = 0, count = 0;
    List l = new ArrayList();
    do {
        i = originalString.indexOf(textToSearch, last);
        if (i != -1) l.add(i);
        last = i + textToSearch.length();
    } while (i != -1);
    return l;
}

НО если мой ввод выглядит следующим образом

String line="hello this is prajakta ,i love to drive car and i am a carpainter"
String text_to_search="car"

Выход:

It gives me two indexes as carpainter contains car which i don't want
Output should be [39]

1 Ответ

0 голосов
/ 06 марта 2019

Вот как вы это делаете, используя регулярное выражение (сопоставление слов)

String line= "hello this is prajakta , how are you?? hello this is prajakta!";
String text_to_search = "\\bhello this is prajakta\\b";
ArrayList<Integer> list = new ArrayList<>();
Pattern p = Pattern.compile(text_to_search);
Matcher m = p.matcher(line);

while (m.find()) {
    list.add(m.start());
}

Log.i("All occurrences", "values are " + list.toString());

Выход: [0, 39]

Если вы ищете, используя эти строки

String line="hello this is prajakta ,i love to drive car and i am a carpainter";
String text_to_search="car";// use as "\\bcar\\b"

Выход [40]

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