我正在尝试制定一些正则表达式,它将消除SharePoint在创建文件夹时不会采用的所有特殊字符。
这些是不允许的字符,我假设下面的底部正则表达式将处理所有这些。但我也希望用短划线替换\或/。
~ " # % & * : < > ? / \ { | }
所以这就是我到目前为止所做的,但是如果可能的话,我希望将这一切都合并到一个函数中。
private void RemoveAndReplaceSpecialCharacters(string input)
{
Regex.Replace(input, @"\\", @"-");
Regex.Replace(input, @"/", @"-");
Regex.Replace(input, @"[^0-9a-zA-Z\._]", string.Empty);
}
答案 0 :(得分:4)
前两个替换版本不需要Regex.Replace
,因此您可以将它们合并为一个,或者,因为它们被相同的字符替换,所以继续使用Regex.Replace
但只使用其中一个。我也冒昧地让你的功能做:
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());
}
答案 1 :(得分:0)
private void RemoveAndReplaceSpecialCharacters(string input)
{
Regex.Replace(input, @"[\\\/]+", "-");
Regex.Replace(input, @"[^0-9a-zA-Z\._]+", string.Empty);
}
答案 2 :(得分:0)
此?
var foo = @"aa\b\hehe";
var baa = Regex.Replace(foo, @"[^\\/]+", "-");