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