J'utilise la Array.Contains
méthode sur un tableau de chaînes. Comment puis-je rendre cela insensible à la casse?
172
array.Contains("str", StringComparer.OrdinalIgnoreCase);
Ou selon les circonstances spécifiques, vous pourriez préférer:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
CurrentCulture
), vous devriez utiliserOrdinal
plutôt queInvariantCulture
.InvariantCulture
. L'utilisation de l'un des trois choix ci-dessus dépend des circonstances. Je ne m'oppose pas à votre réorganisation, mais je supprime le commentaire «probablement pas». Il est déjà clairement indiqué dans la réponse que vous devez choisir celui qui vous convient dans la situation actuelle.Quelques notes importantes de mon côté, ou du moins mettre des informations distribuées à un endroit - concernant le conseil ci-dessus avec un StringComparer comme dans:
array.Contains()
est une méthode d'extension LINQ et fonctionne donc en standard uniquement avec .NET 3.5 ou supérieur, nécessitant:using System;
using System.Linq;
Mais: dans .NET 2.0, la
Contains()
méthode simple (sans prendre en compte l'insensibilité à la casse) est au moins possible comme ceci, avec un cast:if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}
Comme la méthode Contains () fait partie de l'interface IList, cela fonctionne non seulement avec les tableaux, mais aussi avec les listes, etc.
la source
Implémentez un IEqualityComparer personnalisé qui prend en compte l'insensibilité à la casse.
De plus, vérifiez ceci . Alors (en théorie) tout ce que vous auriez à faire est:
la source
la source