Ignorer les accents dans la comparaison des String en C#

 

Avez vous déjà été confronté à une situation où vous deviez comparer des chaines de caractère en ignorant les accents ou du moins, récupérer cette dernière sans accents. Et bien nous allons voir ces deux cas dans ce tutoriel.
 Ce besoin est plutôt récurrents chez les développeurs Francophones.
 Voilà un aperçu du résultat attendu 
 
 Entrée: 
 string str1 = Les élèves vont à l'école
 
 Sortie 
 string str2 = Les eleves vont a l'ecole
 
 str1 == str2 ?
 TRUE

 Une fonction qui enlève les accents

 Nous allons d'abord commencer par créer une fonction qui va enlever les accents, nous allons l'appeler RemoveAccents
 Voici le code 


	 public static string RemoveAccents(string s)
        {
            Encoding destEncoding = Encoding.GetEncoding("iso-8859-8");

            return destEncoding.GetString(
                Encoding.Convert(Encoding.UTF8, destEncoding, Encoding.UTF8.GetBytes(s)));
        }
	 

Très simple à comprendre, la fonction prend en paramètre un String, et retourne un autre String mais encodé.

 

Récupérer la chaîne de caractère sans accent

Une fois que vous aviez mis en place cette fonction dans votre programme.
Vous pouvez faire ceci pour récupérer la même chaîne de caractère mais sans accent


string str1 = RemoveAccents("Les élèves vont à l'école");
Console.WriteLine(str1);
	 

Comparaison

Dans le cas d'une comparaison, vous pouvez faire ceci 


	if(string.Compare(str1.RemoveAccents(), str2.RemoveAccents(), true) == 0) {
   ...
   }
	 

 J’espère que ce petit bout de code vous aura aider. A bientôt dans un autre tutoriel.

 

Copyright 2016 SIR JOJO | Designed and Developed By ELTIMAR