Heim >Backend-Entwicklung >C++ >Was ist der effizienteste Weg, Sonderzeichen aus einer Zeichenfolge zu entfernen?
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!