Как использовать разделитель для выделения слов (Java) - PullRequest
0 голосов
/ 14 ноября 2011

Я пишу программу, которая сканирует текстовые файлы, а затем записывает каждое слово в Hashmap.

Класс Scanner имеет разделитель пространства по умолчанию. Но в итоге мои слова хранились с пунктуацией. Я хочу, чтобы сканер распознавал точки, запятые и другие типы пунктуации как знак остановки токена. Вот что я пытался сделать:

    Scanner line_scanner = new Scanner(line).useDelimiter("[.,:;()?!\" \t]+~\\s");

Сканер в основном игнорировал все пробелы, хотя у меня есть '\\ s' как часть выражения. Извините, но у меня почти нет понимания регулярных выражений.

Ответы [ 2 ]

4 голосов
/ 14 ноября 2011
 Scanner line_scanner = new Scanner(line).useDelimiter("[.,:;()?!\"\\s]+");
0 голосов
/ 14 ноября 2011

Вы можете не указывать буквы Юникода:

useDelimiter("[^\\p{L}\\p{M}]+");

([^ ...] нет, заглавная p означает категорию Unicode, L - буквы, M - диакритические знаки объединения (акценты).)

...