Classe CompareInfo

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

Les conventions de tri et de comparaison des données varient d’une culture à l’autre. Par exemple, l’ordre de tri peut être basé sur la phonétique ou sur la représentation visuelle de caractères. Dans les langues d'Asie orientale, les caractères sont classés en fonction du trait et de la clé des idéogrammes. Le tri peut aussi varier en fonction de l'ordre fondamental utilisé par la langue ou la culture pour l'alphabet. Par exemple, la langue danoise emploie un caractère "Æ" qu'elle place après "Z" dans l'alphabet. En outre, les comparaisons peuvent respecter la casse ou ne pas respecter la casse et les règles de casse peuvent également différer selon la culture. La classe CompareInfo est responsable de la maintenance de ces données de comparaison de chaînes respectant la culture et de l’exécution des opérations de chaînes respectant la culture.

En règle générale, vous n’avez pas besoin d’instancier un objet CompareInfo directement, car il est utilisé implicitement par toutes les opérations de comparaison de chaînes non ordinales, notamment les appels à la méthode String.Compare. Toutefois, si vous souhaitez récupérer un objet CompareInfo, vous pouvez le faire de l’une des façons suivantes :

  • En récupérant la valeur de la propriété CultureInfo.CompareInfo d’une culture particulière.

  • En appelant la méthode statique GetCompareInfo avec un nom de culture. Cette opération permet un accès à liaison tardive à un objet CompareInfo.

Valeurs de recherche ignorées

Les jeux de caractères incluent les caractères ignorables, à savoir les caractères qui ne sont pas considérés lors de l'exécution d'une comparaison linguistique ou dépendante de la culture. Les méthodes de comparaison telles que IndexOf et LastIndexOf ne tiennent pas compte de ces caractères lorsqu’elles effectuent une comparaison qui respecte la culture. Les caractères pouvant être ignorés sont les suivants :

  • String.Empty. Les méthodes de comparaison respectant la culture trouvent toujours une chaîne vide au début (index zéro) de la chaîne recherchée.

  • Chaîne ou caractère constitué de caractères avec des codes de caractère qui ne sont pas pris en compte dans l’opération en raison d’options de comparaison, en particulier, les options CompareOptions.IgnoreNonSpace et CompareOptions.IgnoreSymbols génèrent des recherches dans lesquelles les symboles et les caractères d’association sans espace sont ignorés.

  • Chaîne avec des codes de caractère qui n’ont aucune signification linguistique. Par exemple, un trait d’union conditionnel (U+00AD) est toujours ignoré dans une comparaison de chaînes respectant la culture.

Considérations de sécurité

Si une décision de sécurité dépend d’une comparaison de chaînes ou d’un changement de casse, vous devez utiliser la propriété InvariantCulture pour veiller à ce que le comportement soit cohérent, quels que soient les paramètres de culture du système d’exploitation.

Remarque

Lorsque cela est possible, vous devez utiliser des méthodes de comparaison de chaînes qui ont un paramètre de type CompareOptions pour spécifier le type de comparaison attendu. En règle générale, utilisez des options linguistiques (en utilisant la culture actuelle) pour comparer des chaînes affichées dans l’interface utilisateur et spécifiez Ordinal ou OrdinalIgnoreCase pour des comparaisons de sécurité.