Menu
Coddy logo textTech

Tokenizer ciągów znaków

Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 48 z 59.

StringTokenizer służy do dzielenia ciągu znaków na tokeny (mniejsze części) na podstawie separatora. Domyślnie używa białych znaków jako separatora.

Utwórz StringTokenizer z domyślnym separatorem (spacją):

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

Policz i pobierz tokeny:

int count = st.countTokens();
// Pobiera liczbę tokenów
String first = st.nextToken();
// Pobiera następny token

Po wykonaniu powyższego kodu zmienne zawierają:

count: 3
first: "Hello"

Ważne: żetony są zużywane!

Gdy wywołujesz nextToken(), usuwa on ten token z tokenizera. Metoda countTokens() zwraca liczbę pozostałych tokenów.

StringTokenizer st = new StringTokenizer("Hello World Java");
System.out.println(st.countTokens());  // Wypisuje: 3

st.nextToken();  // Pobiera "Hello"
System.out.println(st.countTokens());  // Wypisuje: 2 (a nie 3!)

st.nextToken();  // Pobiera "World"
System.out.println(st.countTokens());  // Wypisuje: 1

Wskazówka: Jeśli chcesz poznać łączną liczbę tokenów, wywołaj countTokens() przed pobraniem jakichkolwiek tokenów. Użyj hasMoreTokens(), aby sprawdzić, czy podczas iteracji są dostępne kolejne tokeny.

challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie tokenizeText, która przyjmuje dwa argumenty:

  1. String (text) do podziału na tokeny
  2. String (delimiter), według którego należy podzielić tekst

Metoda powinna:

  1. Utworzyć obiekt StringTokenizer z podanym tekstem i separatorem
  2. Zwrócić ciąg znaków zawierający liczbę tokenów, a następnie każdy token w nowej linii

Komunikaty zwracane przez metodę powinny być następujące:

  • Jeśli text ma wartość null: zwróć "Invalid text"
  • Jeśli delimiter ma wartość null: użyj spacji jako separatora
  • Format: "Token count: X\nToken: token1\nToken: token2\n..."

Spróbuj swoich sił

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Napisz tutaj swój kod
    }
    
    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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Java online