ホームページ >バックエンド開発 >C++ >文字列から特殊文字を削除する最も効率的な方法は何ですか?

文字列から特殊文字を削除する最も効率的な方法は何ですか?

DDD
DDDオリジナル
2024-12-29 15:27:11468ブラウズ

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

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

ソフトウェア開発では、文字列内の特殊文字を効果的に処理することが不可欠です。英数字、アンダースコア、ドット記号を除くすべての特殊文字を効率的に削除するには、いくつかの方法があります。

一般的な方法の 1 つは、文字列を 1 文字ずつ反復処理して、許可されたセットに対して各文字をチェックすることです。このメソッドは実装が比較的簡単ですが、大きな文字列の場合は最も効率的ではない可能性があります。

<br>public static string RemoveSpecialCharacters(string str) {</p>
<pre class="brush:php;toolbar:false">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();

}

効率を高めるために、より多くのオプションを使用することをお勧めします。事前に初期化されたルックアップ テーブルを使用した直接的なアプローチ。これにより、条件チェックの必要性がなくなり、配列アクセスの数が大幅に削減されます。

<br>private static bool[] _lookup;</p><p>static Program() {</p> <pre class="brush:php;toolbar:false">_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);

}

正規表現も使用できますが、特に小さな文字列の場合、パフォーマンスが上記のアプローチよりも遅くなる可能性があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。