Heim >Backend-Entwicklung >C++ >Was ist der effizienteste Weg, Sonderzeichen aus einer Zeichenfolge zu entfernen?

Was ist der effizienteste Weg, Sonderzeichen aus einer Zeichenfolge zu entfernen?

DDD
DDDOriginal
2024-12-29 15:27:11437Durchsuche

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

Effizientester Ansatz zum Entfernen von Sonderzeichen aus einer Zeichenfolge

In der Softwareentwicklung ist es wichtig, Sonderzeichen innerhalb von Zeichenfolgen effektiv zu verarbeiten. Um alle Sonderzeichen außer alphanumerischen Zeichen, Unterstrichen und Punktsymbolen effizient zu entfernen, gibt es mehrere Ansätze.

Ein gängiger Ansatz besteht darin, die Zeichenfolge Zeichen für Zeichen zu durchlaufen und jedes Zeichen mit dem zulässigen Satz zu vergleichen. Diese Methode ist relativ einfach zu implementieren, aber möglicherweise nicht die effizienteste für große Zeichenfolgen.

<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();

}

Für eine bessere Effizienz wird empfohlen, einen direkteren Ansatz mit einem zu verwenden vorinitialisierte Nachschlagetabelle. Dadurch entfallen bedingte Prüfungen und die Anzahl der Array-Zugriffe wird erheblich reduziert.

<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;

}

öffentliche statische Zeichenfolge 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);

}

Obwohl auch reguläre Ausdrücke verwendet werden können, kann ihre Leistung langsamer sein als die oben genannten Ansätze, insbesondere bei kleinen Zeichenfolgen.

Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, Sonderzeichen aus einer Zeichenfolge zu entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn