2012-12-07 33 views

回答

6

你可以使用string.TrimStart並傳入你要刪除的字符:

var result = yourString.TrimStart('-', '_'); 

然而,這僅僅是如果你想刪除特殊字符的數量是著名的小個好主意。
如果不是的話,你可以使用正則表達式:

var result = Regex.Replace(yourString, "^[^A-Za-z0-9]*", ""); 
+0

你確定這是更快然後'Remove'和'Substring'? – Smartboy

+0

@Smartboy你確定會有任何可測量的性能優勢嗎? TrimStart很容易讀取方法的整體性能(在機器中運行,以及在開發人員閱讀和理解時)可能是最好的。 –

+2

@Smartboy:這是最容易理解的方式,也是編寫它的最快方式。如果這是執行時最快的方法,只能通過一些分析來回答。但是,如果它是一個已經通過編譯器驗證的實際性能問題,請僅對其進行優化。如果你只是認爲這是一個性能問題,那很可能不是。 –

0

我喜歡這兩種方法:

List<string> strings = new List<string>() 
{ 
    "-Xyz", 
    "--Xyz", 
    "---Xyz", 
    "-Xyz-Abc", 
    "--Xyz-Abc" 
}; 

foreach (var s in strings) 
{ 
    string temp; 

    // String.Trim Method 
    char[] charsToTrim = { '*', ' ', '\'', '-', '_' }; // Add more 
    temp = s.TrimStart(charsToTrim); 
    Console.WriteLine(temp); 

    // Enumerable.SkipWhile Method 
    // Char.IsPunctuation Method (se also Char.IsLetter, Char.IsLetterOrDigit, etc.) 
    temp = new String(s.SkipWhile(x => Char.IsPunctuation(x)).ToArray()); 
    Console.WriteLine(temp); 
}