Строковый токенизатор
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 48 из 59.
StringTokenizer используется для разбиения строки на токены (меньшие части) на основе разделителя. По умолчанию он использует пробельные символы в качестве разделителя.
Создайте StringTokenizer с разделителем по умолчанию (пробел):
StringTokenizer st = new StringTokenizer("Hello World Java");Подсчёт и получение токенов:
int count = st.countTokens();
// Gets number of tokens
String first = st.nextToken();
// Gets next tokenПосле выполнения вышеприведенного кода переменные содержат:
count: 3
first: "Hello"Когда вы вызываете nextToken(), он удаляет этот токен из токенизатора. Метод countTokens() возвращает количество оставшихся токенов.
StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens()); // Выводит: 3
st.nextToken(); // Потребляет "Hello"
System.out.println(st.countTokens()); // Выводит: 2 (не 3!)
st.nextToken(); // Потребляет "World"
System.out.println(st.countTokens()); // Выводит: 1Подсказка: Если вам нужно узнать общее количество токенов, вызовите countTokens() перед использованием каких-либо токенов. Используйте hasMoreTokens(), чтобы проверить, есть ли еще доступные токены во время итерации.
Задание
ЛегкоСоздайте метод с именем tokenizeText, который принимает два аргумента:
- Строку (
text) для токенизации - Строку (
delimiter) для разделения
Метод должен:
- Создать StringTokenizer с заданным текстом и разделителем
- Вернуть строку, содержащую количество токенов, за которой следуют каждый токен на новой строке
Сообщения возврата должны быть:
- Если text равен null: вернуть "Invalid text"
- Если delimiter равен null: использовать пробел в качестве разделителя
- Формат: "Token count: X\nToken: token1\nToken: token2\n..."
Шпаргалка
StringTokenizer разбивает строку на токены (меньшие части) на основе разделителя. По умолчанию он использует пробельные символы в качестве разделителя.
Создайте StringTokenizer с разделителем по умолчанию (пробел):
StringTokenizer st = new StringTokenizer("Hello World Java");Подсчёт и получение токенов:
int count = st.countTokens(); // Gets number of tokens
String first = st.nextToken(); // Gets next tokenСоздайте StringTokenizer с пользовательским разделителем:
StringTokenizer st = new StringTokenizer(text, delimiter);Когда вы вызываете nextToken(), он удаляет этот токен из токенизатора. Метод countTokens() возвращает количество оставшихся токенов.
StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens()); // Prints: 3
st.nextToken(); // Consumes "Hello"
System.out.println(st.countTokens()); // Prints: 2 (not 3!)
st.nextToken(); // Consumes "World"
System.out.println(st.countTokens()); // Prints: 1Совет: Если вам нужно знать общее количество токенов, вызовите countTokens() перед потреблением каких-либо токенов. Используйте hasMoreTokens(), чтобы проверить, есть ли ещё доступные токены во время итерации.
Попробуйте сами
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static String tokenizeText(String text, String delimiter) {
// Напишите свой код здесь
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String delimiter = scanner.nextLine();
if (text.equals("null")) text = null;
if (delimiter.equals("null")) delimiter = null;
System.out.println(tokenizeText(text, delimiter));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap5HashSet Часть 2
Математика - Объединение HashSetsМатематика - Пересечение HashSetМатематика - Разность множествМатематика - Симметрическая разностьПодмножества и надмножестваИтерация по множествам8Продвинутые операции со строками
Основы StringBuilderВведение в StringBufferОсновы регулярных выраженийСопоставление шаблонов с RegexСтроковый токенизаторПродвинутое форматирование строк3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов