Member 4336594 Ответов: 1

Удалить не ascii символы удаляет китайские иероглифы


Я использую следующее регулярное выражение для удаления не ascii из строки:
Regex.Replace(item, @"[^\u0020-\u007E]", string.Empty);


Я столкнулся с проблемой при разборе китайской строки. Он полностью удаляет все символы, которые мне не нужны. Есть ли что-нибудь вокруг этого?

Что я уже пробовал:

Я попробовал следующее
Regex.Replace(item, @"[^\u0020-\u007E]", string.Empty);

Tomas Takac

Что именно является вашим требованием? Китайские иероглифы не являются ASCII, поэтому часть "удаление не-ascii символов" работает так, как задумано. Если вы хотите удалить все символы, которые не являются буквами или цифрами, посмотрите на Char.Метод IsLetterOrDigit.

Jochen Arndt

Если у вас есть строка, содержащая только китайские иероглифы, она, конечно же, удалит все из них, что приведет к пустой строке.

Member 4336594

Я столкнулся с проблемой, используя веб-сервис, и строка, которую я передал ему, содержала символ, отличный от ascii, и потерпела неудачу. Чтобы обойти это, я удалил все символы, отличные от ascii. Требование состоит в том, чтобы все еще иметь возможность обрабатывать другие языки, которых это не будет. Оригинальный персонаж выглядел как буква " т " без хвоста (простите меня за плохое описание).

1 Ответов

Рейтинг:
8

#realJSOP

Ну, китайские иероглифы - это символы Юникода, которые по определению не являются ascii. Какого результата вы ожидали?


Member 4336594

Это тот персонаж, которого я хотел удалить :
http://images.devs-on.net/Image/1UIb2MJ0yzmafaTM-Region.png
Что и делает вышеприведенный код, но также Китайский и другие языки. Я не уверен, что использую правильную терминологию. Я хотел бы удалить любого из этих персонажей.