Menu
CoddyTech

Строковый токенизатор

Часть раздела Логика и управление потоком путешествия по 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(), чтобы проверить, остались ли ещё доступные токены, во время итерации.

challenge icon

Задание

Легко

Создай метод с именем tokenizeText, который принимает два аргумента:

  1. Строку (text) для токенизации
  2. Строку (delimiter), по которой нужно разделить

Метод должен:

  1. Создать StringTokenizer с заданным текстом и разделителем
  2. Возвращать строку, содержащую количество токенов, за которым следует каждый токен на новой строке

Сообщения, возвращаемые методом:

  • Если 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));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Java