我有一个包含大量文件夹,子文件夹和所有文件的目录。我的项目的想法是递归整个目录,收集文件的所有名称并替换无效字符(对于SharePoint迁移无效)。
但是,我对正则表达式完全不熟悉。我需要在文件名中删除的字符是:~, #, %, &, *, { } , \, /, :, <>, ?, -, |
和""
我想用空格替换这些字符。我希望使用string.replace()
方法查看所有这些文件名并进行替换。
到目前为止,我所获得的唯一代码是递归。我在考虑递归扫描驱动器,获取这些文件的名称并将它们放在List<string>
中。
有人可以帮我解决如何使用RegEx查找/替换无效字符和这些特定字符吗?
答案 0 :(得分:48)
string pattern = "[\\~#%&*{}/:<>?|\"-]";
string replacement = " ";
Regex regEx = new Regex(pattern);
string sanitized = Regex.Replace(regEx.Replace(input, replacement), @"\s+", " ");
这将替换单个空格的空格。
答案 1 :(得分:8)
有没有办法摆脱多余的空间?
尝试这样的事情:
string pattern = " *[\\~#%&*{}/:<>?|\"-]+ *";
string replacement = " ";
Regex regEx = new Regex(pattern);
string sanitized = regEx.Replace(input, replacement);
考虑自己学习a bit about regular expressions,因为它在开发中也非常有用(例如在Visual Studio中搜索/替换)。