首頁 > 後端開發 > C++ > 如何最有效地從 C# 字串中刪除特殊字元?

如何最有效地從 C# 字串中刪除特殊字元?

Barbara Streisand
發布: 2024-12-29 20:22:12
原創
686 人瀏覽過

How Can I Most Efficiently Remove Special Characters from Strings in C#?

找到從字串中刪除特殊字元的最有效方法

您目前從字串中刪除特殊字元的方法可能看起來效率低下,但它實際上是更有效的方法之一。可以透過使用本機字元變數或枚舉器來減少陣列存取來進行最佳化。提供的程式碼提供了此改進:

public static string RemoveSpecialCharacters(string str) {
   StringBuilder sb = new StringBuilder();
   foreach (char c in str) {
      if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_') {
         sb.Append(c);
      }
   }
   return sb.ToString();
}
登入後複製

效能比較

基準測試證實了改進方法的效率。以下是不同方法的結果,在24 個字元的字串上運行每個函數一百萬次:

  • 原始函數:54.5 毫秒
  • 改進的函數:47.1毫秒
  • 正規表示式:294.4 ms

正規表示式替代

正規表示式也可以用於此任務,但它們比簡單的字串操作慢得多。這是一個範例:

public static string RemoveSpecialCharactersRegex(string str) {
   return Regex.Replace(str, @"[^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 RemoveSpecialCharactersLookup(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);
}
登入後複製

This此方法在執行速度方面優於原始方法和改進方法,但代價是初始化和維護大型查找表記憶。

以上是如何最有效地從 C# 字串中刪除特殊字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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