Ignorer les lettres accentuées dans les comparaisons de chaînes C#
En C#, les chaînes avec la même orthographe mais des accents différents sont généralement traitées comme des entités différentes. Cela peut poser des problèmes lorsque les accents doivent être ignorés pour les comparaisons d'égalité de chaînes.
Pour résoudre ce problème, la fonction RemoveDiacritics
normalise la chaîne d'entrée en NormalizationForm.FormD
et supprime toutes les marques sans espacement, supprimant ainsi tous les accents des caractères. La chaîne résultante est ensuite normalisée en NormalizationForm.FormC
pour restaurer sa sensibilité à la casse d'origine.
<code class="language-csharp">static string RemoveDiacritics(string text) { string formD = text.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); foreach (char ch in formD) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch); if (uc != UnicodeCategory.NonSpacingMark) { sb.Append(ch); } } return sb.ToString().Normalize(NormalizationForm.FormC); }</code>
Cette fonction convertit efficacement un caractère accentué (par exemple "é") en son équivalent non accentué correspondant (par exemple "e"). En utilisant NormalizationForm.FormD
et NormalizationForm.FormC
de Normalize
, vous pouvez supprimer les marques d'accent tout en conservant le respect de la casse.
Par exemple, le code suivant montre comment utiliser la fonction RemoveDiacritics
pour comparer des chaînes en ignorant les accents :
<code class="language-csharp">string s1 = "hello"; string s2 = "héllo"; string s1NoDiacritics = RemoveDiacritics(s1); string s2NoDiacritics = RemoveDiacritics(s2); Console.WriteLine(s1NoDiacritics == s2NoDiacritics); // 输出:True</code>
Dans cet exemple, si les accents ne sont pas pris en compte, s1 et s2 seront considérés comme différents. Cependant, la suppression des accents rend s1NoDiacritics et s2NoDiacritics identiques, ce qui rend la comparaison True.
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!