2012-05-13 15 views

Odpowiedz

27

jestem zgaduję, że źródło adresu URL jest bardziej zawinione. Być może naprawiasz niewłaściwy problem? Usunięcie "dziwnych" znaków z URI może nadać mu zupełnie inne znaczenie.

Z powiedział, że być może uda się usunąć wszystkie znaki spoza ASCII z prostej wymiany strun:

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

Albo można przedłużyć, że dla wszystkich nie-cztery-bajt UTF-8 bohaterów, czy to nie obejmuje znaku "":

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

no no no no no, to nie jest ASCII ... [^\x20-\x7E]

to jest prawdziwe ASCII: [^\x00-\x7F]

W przeciwnym razie będzie przycinać nowe linie i inne znaki specjalne, które są częścią tablicy ascii!

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

Aby usunąć znaki spoza zestawu ASCII z ciągu znaków, poniżej pracował dla mnie kod.

String str = "616043287409";

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

wyjścia: 616043287409

+0

Należy unikać umieszczania kodu jako odpowiedzi i próbować wyjaśnić, co robi i dlaczego. Twój kod może nie być oczywisty dla osób, które nie mają odpowiedniego doświadczenia z kodowaniem. – Frits

1

Zastosowanie Guava CharMatcher

String onlyAscii = CharMatcher.ascii().retainFrom(original)