Giới thiệu về StringBuffer
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 45 trên 59.
StringBuffer tương tự như StringBuilder nhưng an toàn khi dùng trong đa luồng (có thể thực hiện nhiều thao tác cùng lúc). Lớp này dùng để tạo chuỗi có thể thay đổi.
Tạo một StringBuffer với văn bản ban đầu:
StringBuffer sb = new StringBuffer("Hello");Thêm văn bản bằng append():
sb.append(" World");Sau khi chạy đoạn code trên, sb chứa:
Hello World
Sửa đổi văn bản bằng insert() và replace():
StringBuffer sb = new StringBuffer("Java");
sb.insert(0, "Hi "); // thêm vào đầu chuỗi
sb.replace(0, 2, "Hey"); // thay "Hi" bằng "Hey"Sau khi chạy đoạn code trên, sb chứa:
Hey Java
Để tìm vị trí bắt đầu của một đoạn văn bản, hãy dùng indexOf(). Hàm này trả về vị trí của kết quả khớp đầu tiên hoặc -1 nếu không có đoạn văn bản đó:
StringBuffer sb = new StringBuffer("Hey Java");
int pos = sb.indexOf("Java"); // 4
int none = sb.indexOf("Python"); // -1Thử thách
DễTạo một phương thức (method) có tên modifyText nhận ba đối số:
- Một String (
text) cần chỉnh sửa - Một String (
target) cần tìm - Một String (
replacement) dùng để thay thế target
Phương thức này cần:
- Tạo một StringBuffer từ văn bản đầu vào
- Thay thế lần xuất hiện đầu tiên của target bằng replacement
- Thêm dấu chấm than vào cuối
- Trả về chuỗi cuối cùng
Thông báo trả về cần là:
- Nếu bất kỳ đầu vào nào là null: trả về "Invalid input"
- Nếu không tìm thấy target: trả về văn bản ban đầu kèm dấu chấm than
- Nếu thao tác thành công: trả về văn bản đã chỉnh sửa
Tự làm thử
import java.util.Scanner;
public class Main {
public static String modifyText(String text, String target, String replacement) {
// 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 target = scanner.nextLine();
String replacement = scanner.nextLine();
if (text.equals("null")) text = null;
if (target.equals("null")) target = null;
if (replacement.equals("null")) replacement = null;
System.out.println(modifyText(text, target, replacement));
}
}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