Как удалить такого рода символы (мусор) из строки? - PullRequest
1 голос
/ 16 сентября 2008

Представьте, что у меня есть строка в C #: "Я не вижу тебя .."

Я хочу удалить (заменить на ничто и т. Д.) Эти символы «¢ ¢ â €».

Как мне это сделать?

Ответы [ 12 ]

0 голосов
/ 16 сентября 2008

Либо используйте черный список вещей, которые вам не нужны, либо желательно белый список (установлен). С белым списком вы перебираете строку и копируете только буквы из белого списка в строку результата. Вы сказали удалить, и способ, которым вы делаете это, имеет два указателя, один из которых вы читаете из (R), а другой - в (W):

I Donââ‚
     W  R

если запятая находится в вашем белом списке, то в этом случае вы прочитаете запятую и напишите ее, где Ã, а затем передвиньте оба указателя. UTF-8 является многобайтовой кодировкой, поэтому продвижение указателя может быть не просто добавлением к адресу.

С помощью C легко получить белый список с помощью одной из предопределенных функций (или макросов): isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit. В этом случае вы отправляете с функцией белого списка вместо набора курса.

Обычно, когда я вижу такие данные, как у вас, я ищу повреждение памяти или свидетельство того, что ожидаемая кодировка отличается от той, с которой были введены данные.

/ Аллан

0 голосов
/ 16 сентября 2008

Код ASCII / Integer для этих символов не входит в нормальные буквенные диапазоны. Ищите и заменяйте пустыми символами. Я считаю, что в строке есть метод Replace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...