使用RegEx替换无效字符

时间:2010-06-09 19:38:14

标签: c# regex

我有一个包含大量文件夹,子文件夹和所有文件的目录。我的项目的想法是递归整个目录,收集文件的所有名称并替换无效字符(对于SharePoint迁移无效)。

但是,我对正则表达式完全不熟悉。我需要在文件名中删除的字符是:~, #, %, &, *, { } , \, /, :, <>, ?, -, |"" 我想用空格替换这些字符。我希望使用string.replace()方法查看所有这些文件名并进行替换。

到目前为止,我所获得的唯一代码是递归。我在考虑递归扫描驱动器,获取这些文件的名称并将它们放在List<string>中。

有人可以帮我解决如何使用RegEx查找/替换无效字符和这些特定字符吗?

2 个答案:

答案 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中搜索/替换)。