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

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

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

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

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

25
задан Mark 4 March 2016 в 11:20
поделиться

2 ответа

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

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

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

49
ответ дан 28 November 2019 в 20:33
поделиться

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

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

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

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

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

8
ответ дан 28 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: