Строковый токенизатор
Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 48 из 59.
StringTokenizer используется для разделения строки на токены (более мелкие части) на основе разделителя. По умолчанию в качестве разделителя используются пробельные символы.
Создай StringTokenizer со стандартным разделителем (пробелом):
StringTokenizer st = new StringTokenizer("Hello World Java");Чтобы разделить строку по другому символу, передай его вторым аргументом. Каждый символ этой строки по отдельности служит разделителем:
StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens()); // Выводит: 3Подсчитать количество и получить токены:
int count = st.countTokens();
// Получает количество токенов
String first = st.nextToken();
// Получает следующий токенПосле выполнения приведённого выше кода переменные содержат:
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..."
Попробуйте сами
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Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка словПотренируйтесь самостоятельно: Онлайн-компилятор Java