Spec-Zone.ru › OpenJDK 8

Класс StringTokenizer

  • java.lang.Object
    • java.util.StringTokenizer
Все реализованные интерфейсы:
Enumeration<Object>

public class StringTokenizer
extends Object
implements Enumeration<Object>

Класс string tokenizer позволяет приложению разбить строку на токены. Метод токенизации намного проще, чем тот, который используется классом StreamTokenizer. Методы StringTokenizer не различают идентификаторы, числа и строки в кавычках, а также не распознают и не пропускают комментарии.

Множество разделителей (символы, разделяющие токены) может быть указано либо во время создания, либо для каждого токена.

Экземпляр StringTokenizer ведет себя одним из двух способов, в зависимости от того, был ли он создан со флагом returnDelims, имеющим значение true или false:

  • Если флаг равен false, символы разделителей служат для разделения токенов. Токен — это максимальная последовательность последовательных символов, которые не являются разделителями.
  • Если флаг равен true, символы разделителей сами считаются токенами. Токен — это либо один символ разделителя, либо максимальная последовательность последовательных символов, которые не являются разделителями.

Объект StringTokenizer внутренне хранит текущую позицию в строке, которая должна быть разложена на токены. Некоторые операции продвигают эту текущую позицию дальше обработанных символов.

Токен возвращается путем взятия подстроки строки, которая использовалась для создания объекта StringTokenizer.

Следующий пример использования токенизатора. Код:

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}

выводит следующий результат:

this
is
a
test

StringTokenizer является устаревшим классом, который сохраняется для совместимости, хотя его использование в новом коде не рекомендуется. Рекомендуется, чтобы любой, кто ищет эту функциональность, использовал метод split класса String или пакет java.util.regex вместо него.

Следующий пример демонстрирует, как метод String.split может быть использован для разделения строки на основные токены:

String[] result = "this is a test".split("\\s");
for (int x=0; x<result.length; x++)
    System.out.println(result[x]);

выводит следующий результат:

this
is
a
test
С тех пор:
JDK1.0
См. также:
StreamTokenizer

Конструкторы

Конструктор и описание
StringTokenizer(String str)

Создает string tokenizer для указанной строки.

StringTokenizer(String str, String delim)

Создает string tokenizer для указанной строки.

StringTokenizer(String str, String delim, boolean returnDelims)

Создает string tokenizer для указанной строки.

Методы

Модификатор и тип Метод и описание
int countTokens()

Вычисляет количество раз, которое можно вызвать метод nextToken этого токенизатора, прежде чем будет сгенерировано исключение.

boolean hasMoreElements()

Возвращает то же значение, что и метод hasMoreTokens.

boolean hasMoreTokens()

Проверяет, есть ли в строке токенизатора дополнительные токены.

Object nextElement()

Возвращает то же значение, что и метод nextToken, за исключением того, что возвращаемое значение по умолчанию — Object, а не String.

String nextToken()

Возвращает следующий токен из этой строки токенизатора.

String nextToken(String delim)

Возвращает следующий токен в строке токенизатора.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

StringTokenizer

public StringTokenizer(String str,
                       String delim,
                       boolean returnDelims)

Создает string tokenizer для указанной строки. Все символы в аргументе delim являются разделителями для разделения токенов.

Если флаг returnDelims равен true, то символы разделителей также возвращаются как токены. Каждый разделитель возвращается как строка длины один. Если флаг равен false, символы разделителей пропускаются и служат только разделителями между токенами.

Обратите внимание, что если delim равен null, этот конструктор не генерирует исключение. Однако попытка вызвать другие методы на полученном StringTokenizer может привести к NullPointerException.

Параметры:
str - строка для разбора.
delim - разделители.
returnDelims - флаг, указывающий, следует ли возвращать разделители как токены.
Исключения:
NullPointerException - если str является null

StringTokenizer

public StringTokenizer(String str,
                       String delim)

Создает string tokenizer для указанной строки. Символы в аргументе delim являются разделителями для разделения токенов. Символы разделителей сами не будут обрабатываться как токены.

Обратите внимание, что если delim равно null, этот конструктор не генерирует исключение. Однако попытка вызвать другие методы на полученном StringTokenizer может привести к NullPointerException.

Параметры:
str - строка для разбора.
delim - разделители.
Исключения:
NullPointerException - если str является null

StringTokenizer

public StringTokenizer(String str)

Создает string tokenizer для указанной строки. Токенизатор использует набор разделителей по умолчанию, который равен " \t\n\r\f": символ пробела, символ табуляции, символ новой строки, символ возврата каретки и символ перевода страницы. Символы разделителей сами не будут обрабатываться как токены.

Параметры:
str - строка для разбора.
Исключения:
NullPointerException - если str является null

Подробное описание методов

hasMoreTokens

public boolean hasMoreTokens()

Проверяет, есть ли дополнительные токены в строке токенизатора. Если этот метод возвращает true, то последующий вызов nextToken без аргументов успешно вернёт токен.

Возвращает:
true если и только если в строке после текущей позиции есть хотя бы один токен; false в противном случае.

nextToken

public String nextToken()

Возвращает следующий токен из этой строки токенизатора.

Возвращает:
следующий токен из этой строки токенизатора.
Исключения:
NoSuchElementException - если в строке токенизатора больше нет токенов.

nextToken

public String nextToken(String delim)

Возвращает следующий токен в строке токенизатора. Сначала набор символов, считающихся разделителями этим объектом StringTokenizer изменяется на символы в строке delim. Затем возвращается следующий токен в строке после текущей позиции. Текущая позиция продвигает за распознанным токеном. Новый набор разделителей остаётся по умолчанию после этого вызова.

Параметры:
delim - новые разделители.
Возвращает:
следующий токен после переключения на новый набор разделителей.
Исключения:
NoSuchElementException - если в строке токенизатора больше нет токенов.
NullPointerException - если delim является null

hasMoreElements

public boolean hasMoreElements()

Возвращает то же значение, что и метод hasMoreTokens. Он существует для того, чтобы этот класс мог реализовывать интерфейс Enumeration.

Задано интерфейсом:
hasMoreElements в интерфейсе Enumeration<Object>
Возвращает:
true если есть дополнительные токены; false в противном случае.
См. также:
Enumeration, hasMoreTokens()

nextElement

public Object nextElement()

Возвращает то же значение, что и метод nextToken, за исключением того, что возвращаемое значение по умолчанию — Object, а не String. Он существует для того, чтобы этот класс мог реализовывать интерфейс Enumeration.

Задано интерфейсом:
nextElement в интерфейсе Enumeration<Object>
Возвращает:
следующий токен в строке.
Исключения:
NoSuchElementException - если в строке токенизатора больше нет токенов.
См. также:
Enumeration, nextToken()

countTokens

public int countTokens()

Вычисляет количество раз, которое можно вызвать метод nextToken этого токенизатора, прежде чем будет сгенерировано исключение. Текущая позиция не изменяется.

Возвращает:
количество оставшихся токенов в строке, используя текущий набор разделителей.
См. также:
nextToken()

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API