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
Freigeben: 2024-12-29 15:27:11
Original
444 Leute haben es durchsucht

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>
<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();
Nach dem Login kopieren

}

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> <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;
Nach dem Login kopieren

}

ö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);
Nach dem Login kopieren

}

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!

Quelle:php.cn
Vorheriger Artikel:Wie rufe ich die Basisklassenmethode einer Basisklasse in C# auf? Nächster Artikel:Lesen von UTF-har nach Zeichen in C
Erklärung dieser Website
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
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage