簡體   English   中英

正則表達式替換除斜線之外的所有特殊字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM