Comparaison de chaînes insensibles à la casse dans .NET
Effectuer des comparaisons de chaînes insensibles à la casse est crucial dans de nombreuses tâches de programmation. Cet article explique comment résoudre efficacement ce problème.
Le but est de faire en sorte que les lignes de code suivantes ignorent la casse :
<code>drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);</code>
Utiliser la méthode Equals
et StringComparison.OrdinalIgnoreCase
semble fonctionner :
<code>x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));</code>
Cependant, utiliser cette méthode dans une expression FindIndex
ne produit pas les résultats attendus.
Le principal problème est l'utilisation de x.Username.Equals
. Bien que cette méthode gère en interne les comparaisons insensibles à la casse, elle ne renvoie pas l'index de l'élément correspondant.
Bonnes pratiques pour la comparaison de chaînes .NET insensibles à la casse
Pour effectuer correctement des comparaisons de chaînes insensibles à la casse dans .NET, il est recommandé d'utiliser la méthode String.Compare
et StringComparison.OrdinalIgnoreCase
:
<code>String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0</code>
Alternativement, vous pouvez utiliser la méthode String.Equals
et le drapeau StringComparison.OrdinalIgnoreCase
:
<code>String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)</code>
MSDN recommande ces méthodes pour tester respectivement l'égalité des chaînes et le tri des 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!