Количество слов, предшествующих определенному слову - PullRequest
0 голосов
/ 28 сентября 2011

Хотя indexOf (the) в java дает мне количество символов, предшествующих «the» в предложении Однажды я увидел красивую птицу , я хотел бы узнать способ получения количества слов, предшествующих Это. Например, результат для данного предложения будет 4!

Спасибо.

Ответы [ 4 ]

1 голос
/ 28 сентября 2011

Посмотрите на java.util.Scanner

Сканируйте и считайте слова, пока не нажмете

РЕДАКТИРОВАТЬ : очень простой пример (и не проверенный; -)

public static void main(String args[]) {
    System.out.println(indexOfWord("One day I saw the beautiful bird", "the"));
}

private static int indexOfWord(String input, String word) {
    Scanner s = new Scanner(input);
    Pattern p = Pattern.compile("\\S*");
    int count = 0;
    while (s.hasNext(p)) {
        if (word.equals(s.next(p)))
            return count;
        count++;
    }
    return -1;
}
1 голос
/ 28 сентября 2011

Вы должны сначала разбить строку на слова, чтобы найти индекс слова.

public int indexOfWord(String sentence, String word) {
  return Arrays.asList(sentence.split("\\s+")).indexOf(word);
}

Если вам нужен более эффективный подход, см. Scanner, указанный Сашей.

1 голос
/ 28 сентября 2011

Самый простой способ сделать это - посчитать пробелы, предшествующие "the".

One day I saw the
   ^   ^ ^   ^

Есть 4 пробела, поэтому есть 4 слова.

Конечно, вывозможно, потребуется добавить специальную обработку для нескольких пробелов между словами или знаками препинания.

0 голосов
/ 28 сентября 2011

Используйте String.split(), используя пробел в качестве разделителя. Затем посчитайте количество элементов в возвращаемом массиве, прежде чем перейти к слову.

...