3
我使用C#和我有一樣最快的方式刪除前導特殊字符的字符串在C#
-Xyz
--Xyz
---Xyz
-Xyz-Abc
--Xyz-Abc
字符串我只是想刪除任何領先的特殊字符,直到字母來了,注:特殊字符串中間的字符將保持不變。什麼是最快的方法來做到這一點?
我使用C#和我有一樣最快的方式刪除前導特殊字符的字符串在C#
-Xyz
--Xyz
---Xyz
-Xyz-Abc
--Xyz-Abc
字符串我只是想刪除任何領先的特殊字符,直到字母來了,注:特殊字符串中間的字符將保持不變。什麼是最快的方法來做到這一點?
你可以使用string.TrimStart
並傳入你要刪除的字符:
var result = yourString.TrimStart('-', '_');
然而,這僅僅是如果你想刪除特殊字符的數量是著名的小個好主意。
如果不是的話,你可以使用正則表達式:
var result = Regex.Replace(yourString, "^[^A-Za-z0-9]*", "");
我喜歡這兩種方法:
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);
}
你確定這是更快然後'Remove'和'Substring'? – Smartboy
@Smartboy你確定會有任何可測量的性能優勢嗎? TrimStart很容易讀取方法的整體性能(在機器中運行,以及在開發人員閱讀和理解時)可能是最好的。 –
@Smartboy:這是最容易理解的方式,也是編寫它的最快方式。如果這是執行時最快的方法,只能通過一些分析來回答。但是,如果它是一個已經通過編譯器驗證的實際性能問題,請僅對其進行優化。如果你只是認爲這是一個性能問題,那很可能不是。 –