2011-11-13 55 views
5

Tôi cần xóa dấu chấm câu sau một từ. Ví dụ: word?! phải được đổi thành wordstring: phải được đổi thành string.Làm cách nào để xóa tất cả dấu chấm câu theo một từ trong Java?

Chỉnh sửa: Thuật toán chỉ nên xóa dấu câu ở cuối Chuỗi. Bất kỳ dấu câu trong chuỗi nên ở lại. Ví dụ: doesn't; phải trở thành doesn't.

+0

Dấu chấm câu có thể hiển thị ở các vị trí khác hợp lệ không? Giả sử, nếu bạn có từ ": test", dấu đó có được giữ lại hay được thay thế không? Về cơ bản, bạn có xóa tất cả các dấu hiệu hay chỉ ở cuối từ? – Bryan

Trả lời

2

Bạn có thể sử dụng regex để sửa đổi chuỗi.

String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1"); 

Không có "từ" mà tôi biết nơi ' ở cuối và được sử dụng làm dấu chấm câu. Vì vậy, regex này sẽ làm việc cho bạn.

+0

Biểu thức có thể được đơn giản hóa nếu chuỗi chứa một từ duy nhất và ý định là xóa * dấu * ký tự dấu chấm câu - OP không làm rõ, tuy nhiên ... – bobbymcr

+0

bobbymcr Tôi dự định chỉ xóa các dấu chấm câu. Làm thế nào biểu thức có thể được đơn giản hóa trong trường hợp này? – user1044680

+0

Điều đó có hiệu quả, cảm ơn bạn. – user1044680

5

Sử dụng phương pháp replaceAll(...) chấp nhận cụm từ thông dụng.

String s = "don't. do' that! "; 
s = s.replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2"); 
System.out.println(s); 
Các vấn đề liên quan