Xóa dấu câu khỏi chuỗi trong Java

Trong quá trình xử lý văn bản, cho dù bạn đang tìm kiếm các từ nhất định và đưa ra các quy tắc đối sánh mẫu, đếm tần suất của các phần tử, v.v. - dấu chấm câu có thể tạo ra một chìa khóa cho kế hoạch của bạn.

Thông thường, bạn sẽ muốn xóa các từ dừng, dấu chấm câu, chữ số hoặc các cách khác một số danh mục ký tự, tùy thuộc vào mục tiêu cuối cùng của bạn là gì.

Trong hướng dẫn ngắn này, chúng ta sẽ xem xét cách xóa dấu câu khỏi chuỗi trong Java.

Xóa dấu câu khỏi chuỗi bằng RegEx (Biểu thức chính quy)

Biểu thức chính quy rất phù hợp ở đây, vì chúng có thể sẽ là một phần của các bộ phận xử lý khác và vì chúng là bộ so khớp mẫu hiệu quả! Trong Java, biểu thức chính quy để đối sánh dấu câu là p{Punct} hoặc viết tắt p{P}.

Bạn sẽ phải thoát khỏi dấu gạch chéo ngược đầu tiên trong một chuỗi, vì vậy việc xóa tất cả các dấu câu tương đương với việc đối sánh chúng và thay thế bằng một ký tự trống:

String.replaceAll("p{P}", "")

Hãy áp dụng nó vào một câu đơn giản:

String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Kết quả này trong:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

Hãy xem những ký tự nào được coi là dấu câu ở đây:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Với những ký tự đặc biệt này - ký tự nào còn lại sau khi loại bỏ dấu chấm câu?

$+^`|~

Xóa dấu chấm câu khỏi chuỗi mà không có RegEx

Nếu bạn không muốn sử dụng các biểu thức chính quy, bạn có thể thực hiện kiểm tra thủ công trong khi lặp qua từng ký tự của một chuỗi. Hãy nhớ sử dụng một StringBuffer thay vì String trong khi thực hiện việc này, vì các chuỗi là bất biến và cần phải tạo các bản sao mỗi khi bạn muốn thêm một ký tự - vì vậy bạn sẽ tạo string.length số chuỗi trong bộ nhớ.

StringBuffer có thể thay đổi và có thể dễ dàng chuyển đổi thành một chuỗi bất biến khi kết thúc quá trình:

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

public static String removePunctuations(String s) {
    StringBuffer buffer = new StringBuffer();
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            buffer.append(c);
    }
    return buffer.toString();
}

Hãy tạo một chuỗi và làm sạch nó:

String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello! 
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ 
Where are they? :(

HelloHerearesomespecialcharactersWherearethey

Mặc dù quá trình này có thể tùy chỉnh nhiều hơn, nhưng nó chỉ kiểm tra các chữ cái và chữ số. Bạn có thể kiểm tra theo cách thủ công các mã ký tự và thay vào đó chỉ loại trừ một số ký tự dấu câu - và để lại trong khoảng trắng, dấu ngắt dòng, v.v.

Kết luận

Trong hướng dẫn ngắn này, chúng tôi đã xem xét cách bạn có thể xóa dấu chấm câu hoặc các ký tự đặc biệt nhất định khỏi một chuỗi trong Java, bằng cách sử dụng biểu thức chính quy hoặc kiểm tra thủ công trong for Vòng lặp.

Dấu thời gian:

Thêm từ xếp chồng lên nhau