Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Phương thức Matcher.replaceAll() trong Java với ví dụ


Lớp java.util.regex.Matcher đại diện cho một engine thực hiện các phép toán khớp khác nhau. Không có constructor cho lớp này, bạn có thể tạo/nhận đối tượng của lớp này bằng phương thức matcher() của lớp java.util.regex.Pattern.

Phương thức replaceAll() của lớp này chấp nhận một giá trị chuỗi, thay thế tất cả các chuỗi con khớp trong đầu vào bằng chuỗi giá trị cho trước và trả về kết quả.

Ví dụ 1: Thay thế tất cả ký tự đặc biệt bằng !

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReplaceAllExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập văn bản đầu vào: ");
        String input = sc.nextLine();
        String regex = "[#%&*]";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        
        System.out.println("Có " + count + " ký tự đặc biệt [# % & *] trong văn bản");
        
        // Thay thế TẤT CẢ ký tự đặc biệt bằng !
        String result = matcher.replaceAll("!");
        System.out.println("Đã thay tất cả [# % & *] bằng !: \n" + result);
    }
}

Kết quả

Nhập văn bản đầu vào: Hello# How # are# you *& welcome to T#utorials%point
Có 7 ký tự đặc biệt [# % & *] trong văn bản
Đã thay tất cả [# % & *] bằng !: Hello! How ! are! you !! welcome to T!utorials!point

Ví dụ 2: Chuẩn hóa khoảng trắng (thay nhiều space bằng 1 space)

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReplaceAllExample {
    public static void main(String args[]) {
        System.out.println("Nhập một chuỗi");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        
        // Regex khớp 1 hoặc nhiều khoảng trắng
        String regex = "\\s+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        // Thay thế tất cả chuỗi khoảng trắng bằng 1 space
        String result = matcher.replaceAll(" ");
        System.out.print("Văn bản sau khi xóa khoảng trắng thừa: \n" + result);
    }
}

Kết quả

Nhập một chuỗi: hello this is a sample text with irregular spaces
Văn bản sau khi xóa khoảng trắng thừa: hello this is a sample text with irregular spaces

Lưu ý: replaceAll() cũng tạo matcher mới nội bộ. Tương đương String.replaceAll(regex, repl) nhưng cho phép tái sử dụng Pattern đã biên dịch.