Использование RegEx для замены недопустимых символов - PullRequest
25 голосов
/ 09 июня 2010

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

Однако я совершенно незнаком с Регулярными выражениями. Символы, которые мне нужно избавить в именах файлов: ~, #, %, &, *, { } , \, /, :, <>, ?, -, | и "" Я хочу заменить эти символы пустым пространством. Я надеялся использовать метод string.replace(), чтобы просмотреть все эти имена файлов и сделать замену.

Пока что единственный код, который я получил, - это рекурсия. Я думал о рекурсии, сканирующей диск, выбирающей имена этих файлов и помещающей их в List<string>.

Кто-нибудь может мне помочь с тем, как найти / заменить недопустимые символы в RegEx с этими конкретными символами?

Ответы [ 2 ]

49 голосов
/ 09 июня 2010
string pattern = "[\\~#%&*{}/:<>?|\"-]";
string replacement = " ";

Regex regEx = new Regex(pattern);
string sanitized = Regex.Replace(regEx.Replace(input, replacement), @"\s+", " ");

Это также заменит пробелы с одним пробелом.

8 голосов
/ 10 июня 2010

есть ли способ избавиться от лишних пробелов?

Попробуйте что-то вроде этого:

string pattern = " *[\\~#%&*{}/:<>?|\"-]+ *";
string replacement = " ";

Regex regEx = new Regex(pattern);
string sanitized = regEx.Replace(input, replacement);

Рассмотрите возможность изучения немного о регулярных выражениях самостоятельно, поскольку это также очень полезно при разработке (например, поиск / замена в Visual Studio).

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