| |
:
public class java.util.StringTokenizer
extends java.lang.Object
implements java.util.Enumeration
{
// ---------------------------------------------------
// Конструкторы класса
// ---------------------------------------------------
public StringTokenizer(String str);
public StringTokenizer(String str, String delim);
public StringTokenizer(String str, String delim,
boolean returnTokens);
// ---------------------------------------------------
// Методы
// ---------------------------------------------------
public String nextToken();
public String nextToken(String delim);
public int countTokens();
public boolean hasMoreElements();
public boolean hasMoreTokens();
public Object nextElement();
}
Класс StringTokenizer не имеет никакого отношения к потокам, так как
предназначен для выделения отдельных элементов из строк типа String.
Конструкторы класса получают в качетсве первого параметра str ссылку на
разбираемую строку. Второй параметр delim, если он есть, задает разделители, с
испльзованием которых в строке будут выделяться элементы. Параметр returnTokens
определяет, надо ли вовзвращать обнаруженные разделители как элементы
разбираемой строки.
Рассмотрим кратко методы класса StringTokenizer.
Для разбора строки приложение должно организовать цикл, вызывая в нем метод
nextToken. Условием завершения цикла может быть либо возникновение исключения
NoSuchElementException, либо возврат значения false методами hasMoreElements
или hasMoreTokens.
Метод countTokens позволяет определить, сколько раз был вызван метод
nextToken перед возникновением исключения NoSuchElementException.
Приложение StringToken
Приложение StringToken получает одну строку из стандартного потока ввода и
выполняет ее разбор с помощью класса StringTokenizer. Отдельные элементы строки
выводятся на консоль в столбик (рис. 2.7).
Рис. 2.7. Разбор строки в приложении StringToken
В качестве разделителя заданы символы ",.; ", то есть запятая, точка, точка
с запятой и пробел.
Исходный текст приложения
Исходный текст приложения StringToken вы найдете в листинге 2.6.
Листинг 2.6. Файл StringToken\StringToken.java
// =========================================================
// Разбор текстовой строки при помощи класса
// StringTokenizer
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.io.*;
import java.util.*;
// =========================================================
// Класс StringToken
// Главный класс приложения
// =========================================================
public class StringToken
{
// -------------------------------------------------------
// main
// Метод, получающий управление при запуске приложения
// -------------------------------------------------------
public static void main(String args[])
{
// Массив для ввода строки с клавиатуры
byte bKbdInput[] = new byte[256];
// Введенная строка, которая будет записана в поток
String sOut;
String str;
try
{
// Выводим строку приглашения
System.out.println("Enter string to parse...");
// Читаем с клавиатуры строку для записи в файл
System.in.read(bKbdInput);
// Преобразуем введенные символы в строку типа String
sOut = new String(bKbdInput, 0);
// Создаем разборщик текстовой строки
StringTokenizer st;
st = new StringTokenizer(sOut, ",.; ");
// Запускаем цикл разборки строки
while(st.hasMoreElements())
{
// Получаем очередной жлемент
str = new String((String)st.nextElement());
// Записываем его в стандартный поток вывода
System.out.println(str);
}
System.out.println("Press to terminate...");
System.in.read(bKbdInput);
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
}
}
Описание исходного текста
После ввода текстовой строки и ее записи в поле sOut наше приложение создает
на базе этой строки объект st класса StringTokenizer:
StringTokenizer st;
st = new StringTokenizer(sOut, ",.; ");
Далее он в цикле получает все элементы строки, вызывая для этого метод
nextElement:
while(st.hasMoreElements())
{
str = new String((String)st.nextElement());
System.out.println(str);
}
Для проверки условия за
|
|