У меня есть каталог с большим количеством папок, подпапки и всех с файлами в них. Идея моего проекта состоит в том, чтобы рекурсивно вызвать через весь каталог, собрать все названия файлов и заменить недопустимые символы (недопустимый для миграции SharePoint).
Однако я абсолютно незнаком с Регулярными выражениями. Символы я должен избавиться в именах файлов: ~, #, %, &, *, { } , \, /, :, <>, ?, -, |
и ""
Я хочу заменить эти символы пробелом. Я надеялся использовать a string.replace()
метод, чтобы просмотреть все эти имена файлов и сделать замену.
До сих пор единственный код, до которого я добрался, является рекурсией. Я думал о рекурсии, сканируя диск, выбирая названия этих файлов и помещая их в a List<string>
.
Кто-либо может помочь мне с тем, как найти/заменить недопустимые символы с RegEx с теми определенными символами?
string pattern = "[\\~#%&*{}/:<>?|\"-]";
string replacement = " ";
Regex regEx = new Regex(pattern);
string sanitized = Regex.Replace(regEx.Replace(input, replacement), @"\s+", " ");
Это также заменит пробельные символы одним пробелом.
есть ли способ избавиться от лишних пробелов?
Попробуйте что-нибудь вроде этого:
string pattern = " *[\\~#%&*{}/:<>?|\"-]+ *";
string replacement = " ";
Regex regEx = new Regex(pattern);
string sanitized = regEx.Replace(input, replacement);
Вы можете сами немного узнать о регулярных выражениях , так как это тоже очень полезно при разработке (например, поиск / замена в Visual Studio).