Wczytywanie słów z pliku, strumienie

0

Piszę program, który ma wczytywać dane z pliku i zliczać ile jest słów danej długości (np. dwa słowa długości 1, trzy długości 4 itp.). Używam metody next(), jednak w przypadku, kiedy następnym znakiem jest kropka, przecinek itp., jest on także wczytywany przez funkcję next(). W rezultacie mając np. zdanie "Dawno, dawno temu", pierwszy wyraz według programu ma 6 liter (zamiast 5), drugi i trzeci prawidłowo kolejno 5 i 4.
Jak rozwiązać ten problem? Mogę użyć jakiejś innej funkcji zamiast next() lub dodać jakiś warunek? Ale jaki?

Dodam, że w celu czytania z pliku używam
Scanner in = new Scanner(new BufferedReader(new FileReader("tekst.txt")));

Prosiłbym też o wytłumaczenie, dlaczego powyższa linijka wygląda właśnie tak, szczególnie dlaczego piszemy new BufferedReader(new FileReader("tekst.txt")) i jakie ma to znaczenie dla odczytu danych (znam ogólną teorię, ale trochę się w tym gubię, dlatego prosiłbym o łopatologiczne wytłumaczenie).

Z góry dziękuję za pomoc :)

0

Rozwiązań jest kilka:

  1. Możesz spróbować użyć metody next(String pattern), tylko trzeba napisać dobre wyrażenie regularne
  2. Możesz zrezygnować z klasy Scanner, wczytawać całą linię i wyszukiwać słowa wyrażeniem regularnym
  3. Możesz zrezygnować z klasy Scanner i wyrażeń regularnych, Wczytywać całą linię i liczyć to na piechotę w pętli
0

Poczytaj sobie o tokenizacji tekstu.

0

A w jaki sposób mogę wyszukać słowa wyrażeniem regularnym? Czytałem o tym i jedyne, co znalazłem, to szukanie słów rozpoczynających / kończących się na jakąś literę / cyfrę / znak.
Czy jest możliwe znalezienie słów, które np. kończą się na jakiś znak interpunkcyjny (jakikolwiek, bez podawania konkretnie jaki)?

1 użytkowników online, w tym zalogowanych: 0, gości: 1