2012-05-13 42 views

Trả lời

27

Tôi đoán rằng nguồn của URL có nhiều lỗi hơn. Có lẽ bạn đang sửa chữa vấn đề sai? Việc xóa các ký tự "lạ" khỏi URI có thể mang lại ý nghĩa hoàn toàn khác.

Với những gì đã nói, bạn có thể loại bỏ tất cả các ký tự ASCII với một sự thay thế chuỗi đơn giản:

string fixed = original.replaceAll("[^\\x20-\\x7e]", ""); 

Hoặc bạn có thể mở rộng đến tất cả các phi bốn byte UTF-8 nhân vật nếu điều đó không bao gồm "" nhân vật:

string fixed = original.replaceAll("[^\\u0000-\\uFFFF]", ""); 
1

không không không không không, đây không phải là ASCII ... [^\x20-\x7E]

Đây là ascii thực: [^\x00-\x7F]

Nếu không, nó sẽ cắt bỏ các dòng mới và các ký tự đặc biệt khác là một phần của bảng ascii!

11
yourstring=yourstring.replaceAll("[^\\p{ASCII}]", ""); 
0

Để xóa ký tự không phải ASCII khỏi chuỗi, bên dưới mã đã làm việc cho tôi.

Chuỗi str = "616043287409ÂÂÂÂ";

str = str.replaceAll ("[^ \ p {ASCII}]", "");

Output: 616043287409

+0

Hãy cố gắng tránh chỉ bán phá giá mã như một câu trả lời và cố gắng giải thích nó là gì và tại sao. Mã của bạn có thể không hiển nhiên đối với những người không có trải nghiệm mã hóa có liên quan. – Frits

1

Sử dụng Ổi CharMatcher

String onlyAscii = CharMatcher.ascii().retainFrom(original) 
Các vấn đề liên quan