Partager via


Exécution de comparaisons de chaînes indépendantes de la culture

Par défaut, la méthode String.Compare effectue des comparaisons dépendantes de la culture et qui respectent la casse. Cette méthode inclut également plusieurs surcharges qui fournissent un paramètre culture qui vous permet de spécifier la culture à utiliser et un paramètre comparisonType qui vous sert à spécifier les règles de comparaison à utiliser. L'appel de ces méthodes au lieu de la surcharge par défaut supprime toute ambiguïté à propos des règles utilisées dans un appel de méthode particulier et indique si une comparaison donnée est dépendante ou indépendante de la culture.

RemarqueRemarque

Les surcharges de la méthode String.CompareTo effectuent des comparaisons dépendantes de la culture et sensibles à la casse ; vous ne pouvez pas utiliser cette méthode pour effectuer des comparaisons indépendantes de la culture.Pour des raisons de clarté du code, nous recommandons d'utiliser la méthode String.Compare à la place.

Pour les opérations dépendantes de la culture, spécifiez la valeur d'énumération StringComparison.CurrentCulture ou StringComparison.CurrentCultureIgnoreCase comme paramètre comparisonType. Si vous souhaitez effectuer une comparaison dépendante de la culture à l'aide d'une culture désignée autre que la culture actuelle, spécifiez l'objet CultureInfo qui représente cette culture comme paramètre culture .

Les comparaisons de chaînes indépendantes de la culture prises en charge par la méthode String.Compare sont linguistiques (selon les conventions de tri de la culture indifférente) ou non linguistiques (selon la valeur ordinale des caractères dans la chaîne). La plupart des comparaisons de chaînes indépendantes de la culture sont non linguistiques. Pour ces comparaisons, spécifiez la valeur d'énumération StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase comme paramètre comparisonType. Par exemple, si une décision de sécurité (telle qu'une comparaison de nom d'utilisateur ou de mot de passe) est basée sur le résultat d'une comparaison de chaînes, l'opération doit être indépendante de la culture et non linguistique pour garantir que le résultat n'est pas affecté par les conventions d'une culture ou d'une langue particulière. (Consultez Mappages de casse et règles de tri personnalisés pour obtenir un exemple qui montre comment les comparaisons de chaînes dépendantes de la culture peuvent générer des résultats incohérents).

Utilisez la comparaison de chaînes linguistique indépendante de la culture si vous souhaitez gérer de manière cohérente des chaînes linguistiquement pertinentes de cultures multiples. Par exemple, si votre application affiche des mots qui utilisent plusieurs jeux de caractères dans une zone de liste, vous pouvez afficher des mots dans le même ordre indépendamment de la culture actuelle. Pour les comparaisons linguistiques indépendantes de la culture, le .NET Framework définit une culture indifférente basée sur les conventions linguistiques de l'anglais. Pour effectuer une comparaison linguistique indépendante de la culture, spécifiez StringComparison.InvariantCulture ou StringComparison.InvariantCultureIgnoreCase comme paramètre comparisonType.

L'exemple suivant exécute deux comparaisons de chaînes indépendantes de la culture, non linguistiques. La première respecte la casse, mais pas la seconde.

Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer

        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)   
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult) 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult) 
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult); 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult); 
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Voir aussi

Référence

String.Compare

String.CompareTo

Concepts

Comparaison et tri des données pour une culture spécifique

Meilleures pratiques pour l'utilisation de chaînes dans le .NET Framework

Autres ressources

Exécution d'opérations de chaînes indépendantes de la culture

Historique des modifications

Date

Historique

Motif

Mai 2010

Révision pour refléter les meilleures pratiques relatives à la gestion des chaînes.

Résolution des bogues de contenu.