Menu
CoddyTech

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"); // -1
challenge icon

Thử thách

Dễ

Tạo một phương thức (method) có tên modifyText nhận ba đối số:

  1. Một String (text) cần chỉnh sửa
  2. Một String (target) cần tìm
  3. Một String (replacement) dùng để thay thế target

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

  1. Tạo một StringBuffer từ văn bản đầu vào
  2. Thay thế lần xuất hiện đầu tiên của target bằng replacement
  3. Thêm dấu chấm than vào cuối
  4. 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));
    }
}
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