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 tokenPo 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: 1Wskazó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.
Wyzwanie
ŁatwyUtwórz metodę o nazwie tokenizeText, która przyjmuje dwa argumenty:
- String (
text) do podziału na tokeny - String (
delimiter), według którego należy podzielić tekst
Metoda powinna:
- Utworzyć obiekt StringTokenizer z podanym tekstem i separatorem
- 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));
}
}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
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap5HashSet — część 2
Matematyka — suma zbiorów HashSetMatematyka — część wspólna zbiorów HashSetMatematyka — różnica zbiorówMatematyka — różnica symetrycznaPodzbiory i nadzbioryIterowanie po zbiorach8Zaawansowane operacje na ciągach znaków
Podstawy StringBuilderWprowadzenie do StringBufferPodstawy wyrażeń regularnychDopasowywanie wzorców za pomocą RegexTokenizer ciągów znakówZaawansowane formatowanie ciągów znaków3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online