我正在尝试制定一些正则表达式,以消除 SharePoint 在创建文件夹时不会采用的所有特殊字符。
这些是不允许的字符,我假设下面的底部正则表达式将处理所有这些。但我也想用破折号替换\或/。
~ " # % & * : < > ? / \ { | }
这就是我目前所拥有的,但如果可能的话,我希望将所有这些组合成一个函数。
private void RemoveAndReplaceSpecialCharacters(string input)
{
Regex.Replace(input, @"\\", @"-");
Regex.Replace(input, @"/", @"-");
Regex.Replace(input, @"[^0-9a-zA-Z\._]", string.Empty);
}
请您参考如下方法:
对于前两个替换,您不需要 Regex.Replace,因此您可以将它们合并为一个,或者,因为它们被相同的字符替换,所以继续使用 Regex。替换 但只是其中之一。我还冒昧地让您的函数做一些事情:
private string RemoveAndReplaceSpecialCharacters(string input) {
return Regex.Replace(Regex.Replace(input, "[\\\\/]", "-"), @"[^0-9a-zA-Z\._]", string.Empty);
}
不过,你可以不用正则表达式来做到这一点:(未经测试)
private string RemoveAndReplaceSpecialCharacters(string input) {
const string ALLOWED_CHARACTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._-";
return new string(input.Replace('/', '-').Replace('\\', '-').RemoveAll((c) => !ALLOWED_CHARACTERS.Contains(c)).ToArray());
}
