Как уже отмечали другие, вы можете использовать класс Scanner
.
Я поместил ваш вопрос в файл data.txt
и запустил следующую программу:
import java.io.*;
import java.util.Scanner;
import java.util.regex.MatchResult;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner(new File("data.txt"));
while (null != s.findWithinHorizon("(?i)\\bjava\\b", 0)) {
MatchResult mr = s.match();
System.out.printf("Word found: %s at index %d to %d.%n", mr.group(),
mr.start(), mr.end());
}
s.close();
}
}
Вывод:
Word found: Java at index 74 to 78.
Word found: java at index 153 to 157.
Word found: Java at index 279 to 283.
Поиск шаблона, (?i)\bjava\b
, означает следующее:
(?i)
включить переключатель без учета регистра
\b
означает границу слова
java
- искомая строка
\b
слово ограничено снова.
Если поисковый термин исходит от пользователя или если по какой-либо другой причине он может содержать специальные символы, я предлагаю вам использовать \Q
и \E
вокруг строки, так как в ней указаны все символы между ними (и если вы действительно разборчивы, убедитесь, что ввод не содержит \E
).