首頁 >後端開發 >C++ >從字串中過濾特殊字元最有效的方法是什麼?

從字串中過濾特殊字元最有效的方法是什麼?

Linda Hamilton
Linda Hamilton原創
2025-01-01 04:31:12163瀏覽

What's the Most Efficient Way to Filter Special Characters from a String?

字串中的高效字元過濾

本文解決了從字串中有效刪除特殊字元的任務,確保它只包含字母數字字符,底線和點。

提供的程式碼審查了使用循環進行字元驗證的方法,儘管它可能不是最有效的方法。建議的最佳化涉及使用枚舉器並使用預期容量初始化 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn