[英]regex - Replace all dots,special characters except for the file extension
[英]Regex to replace all special characters except slashes?
我正在嘗試制定一些正則表達式,它將消除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());
}
private void RemoveAndReplaceSpecialCharacters(string input)
{
Regex.Replace(input, @"[\\\/]+", "-");
Regex.Replace(input, @"[^0-9a-zA-Z\._]+", string.Empty);
}
這個?
var foo = @"aa\b\hehe";
var baa = Regex.Replace(foo, @"[^\\/]+", "-");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.