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

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

Linda Hamilton
發布: 2025-01-01 04:31:12
原創
156 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板