Подтвердить что ты не робот

Использование RegEx для замены недопустимых символов

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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