Класс 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("а
- (Ь + с) / Ь * с", " \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
или другой,
наиболее подходящий для дальнейшей обработки текста контейнер. Классы-коллекции
мы рассмотрим в следующей главе.
|