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

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

DDD
リリース: 2024-12-29 15:27:11
オリジナル
455 人が閲覧しました

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

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

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

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

<br>public static string RemoveSpecialCharacters(string str) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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 サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:C# で基本クラスの基本クラス メソッドを呼び出す方法は? 次の記事:C での char による UTF-har の読み取り
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート