Menu
CoddyTech

StringTokenizer

Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 48 trên 59.

StringTokenizer dùng để tách một chuỗi thành các token (phần nhỏ hơn) dựa trên dấu phân cách. Mặc định, nó dùng khoảng trắng làm dấu phân cách.

Tạo một StringTokenizer với dấu phân cách mặc định (dấu cách):

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

Để tách bằng một ký tự khác, hãy truyền ký tự đó làm đối số thứ hai. Mỗi ký tự trong chuỗi đó tự nó là một dấu phân cách:

StringTokenizer st = new StringTokenizer("one,two;three", ",;");
System.out.println(st.countTokens());  // In ra: 3

Đếm và lấy token:

int count = st.countTokens();
// Lấy số lượng token
String first = st.nextToken();
// Lấy token tiếp theo

Sau khi chạy đoạn code trên, các biến chứa:

count: 3
first: "Hello"

Quan trọng: Token sẽ bị tiêu thụ!

Khi bạn gọi nextToken(), phương thức này sẽ loại bỏ mã thông báo đó khỏi bộ phân tích mã thông báo. Phương thức countTokens() trả về số mã thông báo còn lại.

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

st.nextToken();  // Lấy token "Hello"
System.out.println(st.countTokens());  // In ra: 2 (không phải 3!)

st.nextToken();  // Lấy token "World"
System.out.println(st.countTokens());  // In ra: 1

Mẹo: Nếu cần biết tổng số token, hãy gọi countTokens() trước khi lấy bất kỳ token nào. Dùng hasMoreTokens() để kiểm tra xem còn token nào khi lặp qua danh sách hay không.

challenge icon

Thử thách

Dễ

Tạo một phương thức tên là tokenizeText nhận hai đối số:

  1. Một chuỗi (text) để tách thành token
  2. Một chuỗi (delimiter) dùng làm dấu phân cách

Phương thức này cần:

  1. Tạo một StringTokenizer với văn bản và dấu phân cách đã cho
  2. Trả về một chuỗi gồm số lượng token, sau đó là từng token trên một dòng mới

Các thông báo trả về cần là:

  • Nếu text là null: trả về "Invalid text"
  • Nếu delimiter là null: dùng dấu cách làm dấu phân cách
  • Định dạng: "Token count: X\nToken: token1\nToken: token2\n..."

Tự làm thử

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

public class Main {
    public static String tokenizeText(String text, String delimiter) {
        // Viết code của bạn ở đây
    }
    
    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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Java online