Удаление символов, отличных от ASCII, из String в Java
У меня есть URI, который содержит странные символы, такие как:
http://www.abc.de/qq/qq.ww?MIval=typo3_bsl_int_Smtliste&p_smtbez=Schmalbl ttrigeSomerzischeruchtanb
Как удалить "" из этого URI
Ответы
Ответ 1
Я предполагаю, что источник URL-адреса больше виноват. Возможно, вы исправляете неправильную проблему? Удаление "странных" символов из URI может дать ему совершенно другое значение.
С учетом сказанного вы можете удалить все символы, отличные от ASCII, с простой заменой строки:
string fixed = original.replaceAll("[^\\x20-\\x7e]", "");
Или вы можете распространить это на все символы не четырехбайтовых символов UTF-8, если это не распространяется на символ "":
string fixed = original.replaceAll("[^\\u0000-\\uFFFF]", "");
Ответ 2
yourstring=yourstring.replaceAll("[^\\p{ASCII}]", "");
Ответ 3
Нет, нет, нет, нет, это не ASCII... [^\x20-\x7E]
Это реальный ascii: [^\x00-\x7F]
В противном случае он обрезает символы новой строки и другие специальные символы, которые являются частью таблицы ascii!
Ответ 4
Использовать Guava CharMatcher
String onlyAscii = CharMatcher.ascii().retainFrom(original)
Ответ 5
Чтобы удалить символы Non-ASCII из строки, ниже код работал у меня.
Строка str = "616043287409ÂÂÂÂ";
str = str.replaceAll( "[^\p {ASCII}]", "");
Выход: 616043287409