ホームページ > バックエンド開発 > C++ > C# の文字列から特殊文字を最も効率的に削除するにはどうすればよいですか?

C# の文字列から特殊文字を最も効率的に削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-29 20:22:12
オリジナル
663 人が閲覧しました

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

文字列から特殊文字を削除する最も効率的なアプローチを見つける

文字列から特殊文字を削除する現在の方法は非効率的に見えるかもしれませんが、実際には、より効率的なアプローチの 1 つです。ローカル文字変数または列挙子を使用して最適化を行い、配列アクセスを減らすことができます。提供されたコードは次の改善を提供します。

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 文字の文字列に対して各関数を 100 万回実行した、さまざまなアプローチの結果を次に示します。

  • 元の関数: 54.5 ミリ秒
  • 改善された関数: 47.1 ミリ秒
  • 正規表現: 294.4 ms

正規表現の代替

正規表現もこのタスクに使用できますが、単純な文字列操作よりも大幅に時間がかかります。以下に例を示します。

public static string RemoveSpecialCharactersRegex(string str) {
   return Regex.Replace(str, @"[^0-9a-zA-Z\._]", "");
}
ログイン後にコピー

ルックアップ テーブルの最適化

もう 1 つの効率的な解決策には、許可された文字のルックアップ テーブルを作成することが含まれます。

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);
}
ログイン後にコピー

これこのアプローチは実行速度の点で元の方法と改良された方法の両方を上回っていますが、大規模な初期化と維持というコストがかかります。メモリ内のルックアップ テーブル。

以上がC# の文字列から特殊文字を最も効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート