Замена всех не-ASCII символов, кроме символа прямого угла в C # - PullRequest
1 голос
/ 15 ноября 2010

Написание файловой утилиты для удаления всех не-ASCII символов из файлов.У меня есть это регулярное выражение:

Regex rgx = new Regex(@"[^\u0000-\u007F]");

, который прекрасно работает.Но, к сожалению, я обнаружил, что некоторые глупые люди используют прямые углы (¬) в качестве разделителей в своих файлах, поэтому их тоже убирают, но они мне нужны!

Я довольно новичок в Regex, иЯ понимаю основы, но любая помощь будет потрясающей!

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

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

Попробуйте это:

Regex rgx = new Regex(@"[^\uxxxx\u0000-\u007F]");

Или это:

Regex rgx = new Regex(@"[^\uxxxx-\uxxxx\u0000-\u007F]");

(где xxxx - это кодовая точка Unicode для символа, который вы хотите сохранить.)

Причина предоставления двух вариантов здесь в том, что я знаю, что вы можете указать несколько диапазонов в пределах одной группы отрицательных символов, но я не знаю, можете ли вы сопоставить отдельные символы с диапазонами.

1 голос
/ 15 ноября 2010

Ответ Джона абсолютно верен.Возможно, вы используете неправильный код для персонажа.Попробуйте следующие похожие символы:

Regex regex = new Regex(@"([^\u00ac\u0000-\u007F])");
Regex regex = new Regex(@"([^\u02fa\u0000-\u007F])");
Regex regex = new Regex(@"([^\u031a\u0000-\u007F])");

Первый должен работать, я думаю.

...