Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

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

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

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

Сообщения возврата должны быть:

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

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

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