Maison > développement back-end > C++ > Quelle est la manière la plus efficace de supprimer les caractères spéciaux d'une chaîne ?

Quelle est la manière la plus efficace de supprimer les caractères spéciaux d'une chaîne ?

DDD
Libérer: 2024-12-29 15:27:11
original
469 Les gens l'ont consulté

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

Approche la plus efficace pour supprimer les caractères spéciaux d'une chaîne

Dans le développement de logiciels, il est essentiel de gérer efficacement les caractères spéciaux dans les chaînes. Pour supprimer efficacement tous les caractères spéciaux, à l'exception des symboles alphanumériques, des traits de soulignement et des points, il existe plusieurs approches.

Une approche courante consiste à parcourir la chaîne caractère par caractère, en vérifiant chaque caractère par rapport à l'ensemble autorisé. Cette méthode est relativement simple à mettre en œuvre mais n'est peut-être pas la plus efficace pour les grandes chaînes.

<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();
Copier après la connexion

}

Pour une meilleure efficacité, il est recommandé d'utiliser une approche plus directe avec un table de recherche pré-initialisée. Cela élimine le besoin de vérifications conditionnelles et réduit considérablement le nombre d'accès au tableau.

<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;
Copier après la connexion

}

chaîne statique publique 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);
Copier après la connexion

}

Bien que les expressions régulières puissent également être utilisées, leurs performances peuvent être plus lentes que les approches ci-dessus, en particulier pour les petites chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Article précédent:Comment appeler la méthode de classe de base d’une classe de base en C# ? Article suivant:Lecture d'UTF-har par char en C
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal