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

Di chuyển tất cả ký tự đặc biệt về cuối chuỗi bằng Java Regular Expression (RegEx)


Biểu thức chính quy sau khớp với tất cả các ký tự đặc biệt, tức là tất cả ký tự trừ chữ cái tiếng Anh, khoảng trắng và chữ số:

"[^a-zA-Z0-9\\s+]"

Để di chuyển tất cả ký tự đặc biệt về cuối dòng đã cho, khớp tất cả ký tự đặc biệt bằng regex này, nối chúng vào một chuỗi rỗng và nối các ký tự còn lại vào một chuỗi khác, cuối cùng nối hai chuỗi này.

Ví dụ 1: Lặp ký tự thủ công

public class RemovingSpecialCharacters {
    public static void main(String args[]) {
        String input = "sample # text * with & special@ characters";
        String regex = "[^a-zA-Z0-9\\s+]";
        String specialChars = "";
        String inputData = "";
        for (int i = 0; i < input.length(); i++) {
            char ch = input.charAt(i);
            if (String.valueOf(ch).matches(regex)) {
                specialChars = specialChars + ch;
            } else {
                inputData = inputData + ch;
            }
        }
        System.out.println("Kết quả: " + inputData + specialChars);
    }
}

Kết quả

Kết quả: sample text with special characters#*&@

Ví dụ 2: Sử dụng Matcher.appendReplacement()

Chương trình Java sau di chuyển các ký tự đặc biệt của chuỗi về cuối nó bằng các phương thức của gói Regex.

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

public class Test {
    public static void main(String args[]) {
        String input = "sample # text * with & special@ characters";
        String regex = "[^a-zA-Z0-9\\s+]";
        String specialChars = "";
        System.out.println("Chuỗi đầu vào: \n" + input);
        
        // Tạo đối tượng Pattern
        Pattern pattern = Pattern.compile(regex);
        
        // Khớp pattern đã biên dịch trong chuỗi
        Matcher matcher = pattern.matcher(input);
        
        // Tạo StringBuffer rỗng
        StringBuffer sb = new StringBuffer();
        
        while (matcher.find()) {
            specialChars = specialChars + matcher.group();
            matcher.appendReplacement(sb, "");
        }
        matcher.appendTail(sb);
        System.out.println("Kết quả: \n" + sb.toString() + specialChars);
    }
}

Kết quả

Chuỗi đầu vào: sample # text * with & special@ characters
Kết quả: sample text with special characters#*&@