Иллюстрированный самоучитель по Java

Класс StringTokenizer

Класс StringTokenizer из пакета java.utii небольшой, в нем три конструктора и шесть методов.

Первый конструктор StringTokenizer (String str) создает объект, готовый разбить строку str на слова, разделенные пробелами, символами табуляций '\t', перевода строки '\n' и возврата каретки '\r'. Разделители не включаются в число слов.

Второй конструктор StringTokenizer (String str. String delimeters) задает разделители вторым параметром deiimeters, например:

StringTokenizer("Казнить,нельзя:пробелов-нет", " \t\n\r,:-");

Здесь первый разделитель – пробел. Потом идут символ табуляции, символ перевода строки, символ возврата каретки, запятая, двоеточие, дефис. Порядок расположения разделителей в строке deiimeters не имеет значения. Разделители не включаются в число слов.

Третий конструктор позволяет включить разделители в число слов:

StringTokenizer(String str, String deiimeters, boolean flag);

Если параметр flag равен true, то разделители включаются в число слов, если false – нет. Например:

StringTokenizer("а – (b + с) / b * с", " \t\n\r+*-/(), true);

В разборе строки на слова активно участвуют два метода:

  • метод nextToken () возвращает в виде строки следующее слово;
  • логический метод hasMoreTokens () возвращает true, если в строке еще есть слова, и false, если слов больше нет.

Третий метод countTokens () возвращает число оставшихся слов.

Четвертый метод nextToken(string newDeiimeters) позволяет "на ходу" менять разделители. Следующее слово будет выделено по новым разделителям newDeiimeters; новые разделители действуют далее вместо старых разделителей, определенных в конструкторе или предыдущем методе nextToken ().

Оставшиеся два метода nextEiement () и hasMoreEiements () реализуют интерфейс Enumeration. Они просто обращаются к методам nextToken () и hasMoreTokens().

Схема очень проста (листинг 5.2).

Листинг 5.2. Разбиение строки на слова.

String s = "Строка, которую мы хотим разобрать на слова";
StringTokenizer st = new StringTokenizer(s, " \t\n\r,.");
while(st.hasMoreTokens()){
// Получаем слово и что-нибудь делаем с ним, например,
// просто выводим на экран
System.out.println(st.nextToken());
}

Полученные слова обычно заносятся в какой-нибудь класс-коллекцию: Vector, Stack или другой, наиболее подходящий для дальнейшей обработки текста контейнер. Классы-коллекции мы рассмотрим в следующей главе.

Заключение

Все методы представленных в этой главе классов написаны на языке Java. Их исходные тексты можно посмотреть, они входят в состав JDK. Эти очень полезное занятие. Просмотрев исходный текст, вы получаете полное представление о том, как работает метод.

В последних версиях JDK исходные тексты хранятся в упакованном архиватором jar файле src.jar, лежащем в корневом каталоге JDK, например, в каталоге D:\jdk 1.3.

Чтобы распаковать их, перейдите в каталог jdk 1.3:

D: > cd jdk1.3

…и вызовите архиватор jar следующим образом:

D:\jdk1.3 > jar – xf src.jar

В каталоге jdk1.3 появится подкаталог src, а в нем подкаталоги, соответствующие пакетам и подпакетам JDK, с исходными файлами.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.