Skip to main content
 首页 » 编程设计

c#之正则表达式替换除斜杠以外的所有特殊字符

2024年02月23日30zfyouxi

我正在尝试制定一些正则表达式,以消除 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()); 
}