C# 正则表达式是否替换除斜杠以外的所有特殊字符?

C# 正则表达式是否替换除斜杠以外的所有特殊字符?,c#,regex,C#,Regex,我正在尝试制定一些正则表达式,以消除SharePoint在创建文件夹时不会使用的所有特殊字符 这些是不允许的字符,我假设下面的底部正则表达式将处理所有这些字符。但我也想用破折号来代替\或/ ~ % & * : < > ? / \ { | } 这就是我到目前为止所做的,但是如果可能的话,我希望把这一切结合到一个函数中 private void RemoveAndReplaceSpecialCharacters(string input) { Regex.Replace

我正在尝试制定一些正则表达式,以消除SharePoint在创建文件夹时不会使用的所有特殊字符

这些是不允许的字符,我假设下面的底部正则表达式将处理所有这些字符。但我也想用破折号来代替\或/

~ % & * : < > ? / \ { | } 这就是我到目前为止所做的,但是如果可能的话,我希望把这一切结合到一个函数中

 private void RemoveAndReplaceSpecialCharacters(string input)
    {
        Regex.Replace(input, @"\\", @"-");
        Regex.Replace(input, @"/", @"-");
        Regex.Replace(input, @"[^0-9a-zA-Z\._]", string.Empty);
    }
这个

这个

前两个替换不需要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());
}
前两个替换不需要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());
}

它已经在一个函数中。。。你到底想解决/完成什么?@mallamokb我想请求的解决方案是将三个函数调用组合成一个函数调用。它已经在一个函数中了。。。你到底想解决/完成什么?@mallamokb我想请求的解决方案是将三个函数调用组合成一个函数调用。