2015-08-07 2 views
0

У меня есть следующая строка, в которой скрывается специальный символ Â. Я хочу удалить только  из этой строки ~IQBAL~KARACHI¦~~~~~~~~~~~.Как удалить символ  из строки в java?

Вот до и после того, как изображение, чтобы показать, что я имею в виду:

enter image description here

Я попробовал этот код:

responseMessageUTF.replaceAll("\\P{InBasic_Latin}", ""); 

, но это также замена ¦ характер. Есть ли способ удалить только символ Â, а не символ ¦?

+2

Что вы подразумеваете под «специальным персонажем скрывается»? Вы на самом деле * ожидаете * получить этот символ вообще, или это возможно из-за проблемы с кодировкой? Что не так, просто используя 'String.replace' и указав точный символ? –

+0

Пожалуйста, проверьте изображение, которое я здесь приложил, показывая блокнот и интернет-проводник. этот текст идет через потоки. –

+1

Ну, похоже, что вы не читаете его правильно. Вы не должны пытаться замаскировать это, заменив символы ... (У нас по-прежнему нет достаточной информации, чтобы быть уверенным - это не помогает, мы понятия не имеем, откуда поступает информация, re, преобразовывая его в строку.) –

ответ

-1

Вы должны использовать правильную кодировку UTF:

Пример кода:

String blub = " ~KARACHI¦~~~~~~"; 
System.out.println(blub); 
System.out.println(blub.replaceAll(new String("Â".getBytes("UTF-8"), "UTF-8"), "")); 

Выход:

~KARACHI¦~~~~~~ 
~KARACHI¦~~~~~~ 

Смотрите описание похожую на эту проблему здесь: Link

+2

В чем смысл «новой строки» («Â» .getBytes («UTF-8»), «UTF-8») '? Это очень запутанный способ написания '' '' ''. Кроме того, replaceAll() ожидает регулярное выражение. replace() более подходит. –

+0

Я использую это, если я задаю кодировку для конкретных символов, которые мне нужно проанализировать. Возможно, это не самое простое решение, но оно работает для меня в моем коде. – MrT

+2

Персонажи не имеют кодировки. Кодировка используется для преобразования символов в байты и наоборот. Здесь нет такой трансформации. Вы просто хотите удалить символы из строки, которая представляет собой последовательность символов. 'blub.replace (" Â "," ")' работает так же хорошо. –

2

У меня есть простой один код лайнера, он удаляется для большинства символов, отличных от UTF-8. Я тоже тестировал ваш персонаж, т. Е.

 String myString = "~KARACHI¦~~~~~~"; 
     String result = myString.replaceAll("[^\\x00-\\x7F]",""); 
     System.out.println(result); 

Полный текст кода here. Вы можете проверить это также here.

Смежные вопросы