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 theoSau 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: 1Mẹ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.
Thử thách
DễTạo một phương thức tên là tokenizeText nhận hai đối số:
- Một chuỗi (
text) để tách thành token - Một chuỗi (
delimiter) dùng làm dấu phân cách
Phương thức này cần:
- Tạo một StringTokenizer với văn bản và dấu phân cách đã cho
- 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));
}
}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
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMap5HashSet phần 2
Toán học: hợp của các HashSetToán học: giao của HashSetToán học: hiệu tập hợpToán học: hiệu đối xứngTập con và tập chaDuyệt qua các tập hợp8Thao tác chuỗi nâng cao
Kiến thức cơ bản về StringBuilderGiới thiệu về StringBufferKiến thức cơ bản về biểu thức chính quySo khớp mẫu bằng RegexStringTokenizerĐịnh dạng chuỗi nâng caoTự luyện tập: Trình biên dịch Java online