Класс StringTokenizer Java. Разбор строк

Класс StringTokenizer из пакета java.util содержит простые средства для разделения строки на отдельные составляющие — токены. Токен – это любая цепочка символов, не содержащая разделителей и ограниченная слева и справа разделителями. Множество символов-разделителей может быть указано заранее или в процессе выделения токенов.

В данном пакете предусмотрен особый режим поиска токенов, при котором отдельный символ-разделитель также считается токеном. Такой режим задается при создании объекта (при вызове конструктора) значением true параметра retunDelim.

Когда создается объект класса StringTokenizer Java, разделяемая строка и множество разделителей известны (разделители заданы неявно в случае конструктора с одним параметром или явно в случае других конструкторов). Поэтому можно определить, сколько токенов в строке (метод countTokens()). Очередной токен выделяется как строка (метод nextToken()) или как объект (метод nextElement()). Поиск токенов в строке происходит слева направо.

Иногда после обнаружения определенного слова необходимо сменить множество разделителей, чтобы остаток строки делить на токены по-другому. Новые разделители указывают как аргумент метода nextToken( «разделители»). Эти разделители будут действительны до новой замены.

Обычно требуется перебирать все токены строки, для чего применяют цикл for или цикл while. В цикле for переменная цикла «пересчитывает” токены, количество которых определено методом countTokens( ). В цикле while в качестве условия применяют метод hasMoreTokens(), который заглядывает вперед и возвращает true только в том случае, если впереди есть хоть один токен. В обоих случаях перемещение от токена к токену производит метод nextToken().

Конструктор с одним параметром предполагает, что используются стандартные разделители – «
f»— пробел, табуляция, новая строка, возврат каретки, новая страница. В качестве результата при выполнении цикла while из примера будут напечатаны слова: строка, состоит, из, отдельных, слов.

Еще класс похожий на StringTokenizer Java


В Java есть класс, похожий по назначению на StringTokenizer Java — StreainTokenizer.

Этот класс предназначен для разделения на токены входного потока. Класс обеспечивает чтение из потока одного (очередного) токена за один раз. Процесс выделения токенов управляется таблицами и флагами. StreamTokenizer Java „понимает“ такие токены как идентификаторы, числа, строковые литералы, и разного вида комментарии.

Каждый байт входного потока рассматривается как символ в диапазоне ‘u0000’ … ‘u00FF’ Значение символа позволяет определить атрибуты символа: пробельный, буквенный, цифровой, символ строки, символ комментария. Работой управляют четыре флажка.

Один указывает, возвращать ли „конец строки“ как токен или рассматривать как пробел-разделитель, второй определяет, следует ли комментарии в стиле языка С (текст между /* и */) распознавать и пропускать, третий определяет аналогичные действия для комментариев в стиле языка C++, четвертый задает режим перевода символов внутри идентификаторов в маленькие буквы. Так же, как и для класса StringTokenizer, сначала создается объект класса StreamTokenizer Java, к которому применяется nextToken() до тех пор, пока он не вернет значение TT_EOF (конец потока данных).

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.