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

Phương thức Matcher.replaceFirst() 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 replaceFirst() của lớp này chấp nhận một giá trị chuỗi, thay thế chuỗi con khớp đầu tiên trong văn bản đầu vào bằng chuỗi giá trị cho trước và trả về kết quả.

Ví dụ 1: Thay thế ký tự # đầu tiên bằng @

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

public class ReplaceFirstExample {
    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("Ký tự # xuất hiện " + count + " lần");
        
        // Thay thế lần xuất hiện đầu tiên
        String result = matcher.replaceFirst("@");
        System.out.println("Văn bản sau khi thay # đầu tiên bằng @: \n" + result);
    }
}

Kết quả

Nhập văn bản đầu vào: Hello# How # are# you #welcome to Tutorials#point
Ký tự # xuất hiện 5 lần
Văn bản sau khi thay # đầu tiên bằng @: Hello@ How # are# you #welcome to Tutorials#point

Ví dụ 2: Thay thế khoảng trắng đầu tiên bằng _

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

public class ReplaceFirstExample {
    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();
        String regex = "\\s+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        // Thay thế khoảng trắng đầu tiên bằng _
        String result = matcher.replaceFirst("_");
        System.out.print("Văn bản sau khi thay khoảng trắng đầu bằng '_': \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 thay khoảng trắng đầu bằng '_': hello_this is a sample text with irregular spaces

Lưu ý: replaceFirst() tạo matcher mới nội bộ, không ảnh hưởng matcher hiện tại. Tương đương matcher.replaceFirst(repl) = Pattern.compile(regex).matcher(input).replaceFirst(repl).