Partager via


Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.

Les conventions de comparaison et de tri des données varient de la culture à la culture. Par exemple, l’ordre de tri peut être basé sur des phonétiques ou sur la représentation visuelle des 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 dépend également de l’ordre des langues et cultures utilisées pour l’alphabet. Par exemple, la langue danoise a un caractère « Æ » qu’il trie après « Z » dans l’alphabet. En outre, les comparaisons peuvent être sensibles ou insensibles à la casse, et les règles de casse peuvent également différer selon les cultures. La CompareInfo classe est responsable de la maintenance de ces données de comparaison de chaînes sensibles à la culture et de l’exécution d’opérations de chaîne sensibles à la culture.

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

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

  • En appelant la méthode statique GetCompareInfo en utilisant un nom de culture. Cela permet d’accéder tardivement à un CompareInfo objet.

Valeurs de recherche ignorées

Les jeux de caractères incluent des caractères ignorés, qui sont des caractères qui ne sont pas pris en compte lors de l’exécution d’une comparaison linguistique ou culturelle. Les méthodes de comparaison telles que IndexOf et LastIndexOf ne tiennent pas compte de ces caractères lors d'une comparaison sensible à la culture. Les caractères que l’on peut ignorer sont les suivants :

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

  • Caractère ou chaîne de caractères composé de caractères avec des points de code qui ne sont pas pris en compte dans l’opération en raison des options de comparaison. En particulier, les options CompareOptions.IgnoreNonSpace et CompareOptions.IgnoreSymbols produisent des recherches dans lesquelles les symboles et les caractères de combinaison non espacés sont ignorés.

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

Considérations relatives à la sécurité

Si une décision de sécurité dépend d’une comparaison de chaînes ou d’une modification de cas, vous devez utiliser la InvariantCulture propriété pour vous assurer que le comportement est cohérent, quels que soient les paramètres de culture du système d’exploitation.

Remarque

Si 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 (à l’aide de la culture actuelle) pour comparer les chaînes affichées dans l’interface utilisateur et spécifier Ordinal ou OrdinalIgnoreCase pour les comparaisons de sécurité.