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

Xóa tất cả ký tự không phải chữ cái (non-alphabet) khỏi String trong Java

Dùng regex \\W+ (non-word characters: không phải chữ, số, underscore) hoặc [^a-zA-Z] (chỉ giữ chữ cái) kết hợp với split() hoặc replaceAll().

Cách 1: Dùng split() + join (Giữ nguyên thứ tự từ)

import java.util.Scanner;

public class RemoveNonAlpha {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập chuỗi: ");
        String str = sc.nextLine();
        
        // Tách bằng non-word chars, join lại
        String[] tokens = str.split("\\W+");
        StringBuilder result = new StringBuilder();
        for (String token : tokens) {
            result.append(token);
        }
        
        System.out.println("Kết quả: " + result);
    }
}
Nhập chuỗi: Krishna ^% Kasyap*@#
Kết quả: KrishnaKasyap

Cách 2: Dùng replaceAll() trực tiếp (Ngắn gọn hơn)

String input = "Krishna ^% Kasyap*@#";
String result = input.replaceAll("[^a-zA-Z]", ""); // Chỉ giữ A-Z, a-z
System.out.println(result); // KrishnaKasyap

So sánh regex

RegexÝ nghĩaGiữ lại
[^a-zA-Z]Không phải chữ cáiChỉ chữ cái (A-Z, a-z)
[^a-zA-Z0-9]Không phải chữ và sốChữ + số
\\WNon-word ([^a-zA-Z0-9_])Chữ, số, underscore
[^\\p{L}]Không phải Unicode letterChữ cái mọi ngôn ngữ (UTF-8)

Khuyên dùng: replaceAll("[^a-zA-Z]", "") cho ASCII; replaceAll("[^\\p{L}]", "") cho Unicode (hỗ trợ tiếng Việt, tiếng Nhật...).