Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 48 из 59.

StringTokenizer используется для разбиения строки на токены (более мелкие части) на основе разделителя. По умолчанию в качестве разделителя используется пробел.

Создайте StringTokenizer с разделителем по умолчанию (пробел):

StringTokenizer st = new StringTokenizer("Hello World Java");

Подсчет и получение токенов:

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Проверьте себя

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

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