Computer >> Máy Tính >  >> Lập trình >> Java

Cách xóa các ký tự không phải ASCII khỏi chuỗi

Lớp ký tự Posix \ p {ASCII} khớp với các ký tự ASCII và ký tự meta ^ đóng vai trò là phủ định.

tức là biểu thức sau khớp với tất cả các ký tự không phải 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à một chuỗi thay thế và thay thế các ký tự của chuỗi hiện tại (khớp với mẫu đã cho) bằng chuỗi thay thế đã chỉ định.

Do đó, Bạn có thể xóa các ký tự đã khớp bằng cách thay thế chúng bằng chuỗi trống “, sử dụng phương thức ReplaceAll ().

Ví dụ 1

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("Enter input data:");
      String input = sc.nextLine();
      String result = input.replaceAll(regex, "");
      System.out.println("Result: "+result);
   }
}

Đầu ra

Enter input data:
whÿ do we fall
Result: wh do we fall

Ví dụ 2

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("Enter input string: ");
      String input = sc.nextLine();
      String regex = "[^\\p{ASCII}]";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Matching the compiled pattern in the String
      Matcher matcher = pattern.matcher(input);
      //Creating an empty string buffer
      StringBuffer sb = new StringBuffer();
      while (matcher.find()) {
         matcher.appendReplacement(sb, "");
      }
      matcher.appendTail(sb);
      System.out.println("Result: \n"+ sb.toString() );
   }
}

Đầu ra

Enter input string:
whÿ do we fall
Result:
wh do we fall