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

Cách loại bỏ ký tự non-ASCII khỏi chuỗi trong Java

Lớp ký tự POSIX \p{ASCII} khớp với các ký tự ASCII. Ký tự meta ^ đóng vai trò phủ định. Do đó, biểu thức sau khớp với tất cả ký tự non-ASCII:

"[^\\p{ASCII}]"

Phương thức replaceAll() của lớp String chấp nhận một biểu thức chính quy và chuỗi thay thế, sau đó thay thế các ký tự khớp với mẫu bằng chuỗi thay thế. Bạn có thể loại bỏ các ký tự khớp bằng cách thay thế chúng bằng chuỗi rỗng "".

Ví dụ 1: Sử dụng replaceAll()

import java.util.Scanner;

public class Exp {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String regex = "[^\\p{ASCII}]";
        System.out.println("Nhập dữ liệu:");
        String input = sc.nextLine();
        String result = input.replaceAll(regex, "");
        System.out.println("Kết quả: " + result);
    }
}

Kết quả

Nhập dữ liệu: whÿ do we fall
Kết quả: wh do we fall

Ví dụ 2: Sử dụng Matcher và StringBuffer

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

public class Example {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập chuỗi:");
        String input = sc.nextLine();
        String regex = "[^\\p{ASCII}]";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        StringBuffer sb = new StringBuffer();
        
        while (matcher.find()) {
            matcher.appendReplacement(sb, "");
        }
        matcher.appendTail(sb);
        System.out.println("Kết quả: \n" + sb.toString());
    }
}

Kết quả

Nhập chuỗi: whÿ do we fall
Kết quả: wh do we fall