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

Par défaut, la méthode Compare effectue des comparaisons dépendantes de la culture et qui respectent la casse. Toutefois, une surcharge de la méthode String.Compare est fournie pour vous permettre de spécifier la culture à utiliser en fournissant un paramètre culture. Le code d'une application doit démontrer clairement si une comparaison de chaînes est destinée à être dépendante de la culture ou non. Pour des opérations dépendantes de la culture, spécifiez la propriété CultureInfo.CurrentCulture comme paramètre culture. Pour des opérations indépendantes de la culture, spécifiez la propriété CultureInfo.InvariantCulture comme paramètre culture.

Si une décision de sécurité est basée sur le résultat d'une opération de comparaison de chaînes, cette opération doit être indépendante de la culture pour garantir que le résultat n'est pas affecté par la valeur de CultureInfo.CurrentCulture. Consultez Mappages de casse et règles de tri personnalisés pour un exemple qui montre comment des comparaisons de chaînes dépendantes de la culture peuvent produire des résultats incohérents.

Les surcharges de la méthode String.CompareTo effectuent, par défaut, des comparaisons dépendantes de la culture et qui respectent la casse. Toutefois, aucune surcharge de cette méthode n'est fournie pour vous permettre de spécifier une comparaison indépendante de la culture. Pour la clarté du code, il est recommandé d'utiliser plutôt la méthode String.Compare et de spécifier CultureInfo.CurrentCulture pour des opérations dépendantes de la culture ou CultureInfo.InvariantCulture pour des opérations indépendantes de la culture.

Utilisation de la méthode String.Compare

La ligne de code suivante montre comment utiliser la méthode String.Compare pour effectuer une comparaison de string1 et string2, dépendante de la culture et qui respecte la casse. CultureInfo.CurrentCulture est passé comme paramètre culture, pour indiquer que les mappages de casse et les règles de tri de CurrentCulture seront utilisés.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);

Pour voir un exemple de code complet qui montre comment utiliser la méthode String.Compare pour effectuer des comparaisons dépendantes de la culture, consultez Comparaison et tri des données pour une culture spécifique.

Pour que cette opération soit indépendante de la culture, vous devez spécifier CultureInfo.InvariantCulture comme paramètre culture. L'exemple de ligne de code suivant montre comment faire.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);

L'exemple de code suivant illustre comment effectuer une comparaison de chaînes indépendante de la culture en utilisant la ligne de code précédente.

Imports System
Imports System.Globalization

Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        
        Dim compareResult As Integer = String.Compare(string1, string2, _
            False, CultureInfo.InvariantCulture)   
        Console.WriteLine("A case-insensitive comparison of {0} and {1} is _
            {2}", string1, string2, compareResult)
    End Sub
End Class
using System;
using System.Globalization;

public class CompareSample
{
    public static void Main()
    {
        String string1 = "file";
        String string2 = "FILE";

        int compareResult = String.Compare(string1, string2, false, 
        CultureInfo.InvariantCulture);
        Console.WriteLine("A case-insensitive comparison of {0} and {1} is 
            {2}", string1, string2, compareResult);
    }
}

Utilisation de la méthode String.CompareTo

L'exemple suivant utilise la méthode String.CompareTo pour effectuer une comparaison de string1 et string2. Par défaut, la comparaison est dépendante de la culture et respecte la casse.

Dim compareResult As Integer = string1.CompareTo(string2)
int compareResult = string1.CompareTo(string2);

Étant donné qu'aucun paramètre culture n'est explicitement passé, le but de l'exemple ci-dessus est ambigu ; vous devez remplacer la méthode String.CompareTo par la méthode String.Compare pour indiquer clairement si vous souhaitez que cette opération soit dépendante ou indépendante de la culture. Si vous souhaitez effectuer une comparaison de string1 et string2, dépendante de la culture et qui respecte la casse, passez CultureInfo.CurrentCulture comme paramètre culture. Ainsi, les mappages de casse et les règles de tri de CurrentCulture sont utilisés. Cela est illustré par l'exemple suivant.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);

Si vous souhaitez effectuer une comparaison de string1 et string2, indépendante de la culture et qui respecte la casse, passez CultureInfo.InvariantCulture comme paramètre culture. Ainsi, les mappages de casse et les règles de tri de InvariantCulture sont utilisés. Cela est illustré par l'exemple suivant.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);

Pour voir un exemple de code complet qui montre comment utiliser la méthode String.Compare pour obtenir des résultats indépendants de la culture, consultez Utilisation de la méthode String.Compare.

Voir aussi

Référence

String.Compare Method
String.CompareTo Method

Concepts

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

Autres ressources

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