字串中的高效字元過濾
本文解決了從字串中有效刪除特殊字元的任務,確保它只包含字母數字字符,底線和點。
提供的程式碼審查了使用循環進行字元驗證的方法,儘管它可能不是最有效的方法。建議的最佳化涉及使用枚舉器並使用預期容量初始化 StringBuilder 以減少陣列存取。
對於 более 高效選項,可以使用正規表示式,但對於短字串,效能可能會受到影響。以下正規表示式將成功匹配允許的字元:
[0-9A-Za-z._]+
但是,在這種情況下,查找表的效能優於字串操作和正規表示式。查找表儲存指示每個字元是否被允許的布林值,顯著加快過濾過程。
包含查找表的完整解決方案:
private static bool[] _lookup; static Program() { _lookup = new bool[65536]; for (char c = '0'; c <= '9'; c++) _lookup[c] = true; for (char c = 'A'; c <= 'Z'; c++) _lookup[c] = true; for (char c = 'a'; c <= 'z'; c++) _lookup[c] = true; _lookup['.'] = true; _lookup['_'] = true; } public static string RemoveSpecialCharacters(string str) { char[] buffer = new char[str.Length]; int index = 0; foreach (char c in str) { if (_lookup[c]) { buffer[index] = c; index++; } } return new string(buffer, 0, index); }
性能測試表明查找表該方法比循環方法或正則表達式要快得多,24 個字符的字符串的執行時間約為13 毫秒。
以上是從字串中過濾特殊字元最有效的方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!