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