Partager via


Exécution de changements de casse indépendants de la culture

Les méthodes String.ToUpper, String.ToLower, Char.ToUpperet Char.ToLower fournissent des surcharges qui n'acceptent pas de paramètres. Par défaut, ces surcharges sans paramètre effectuent des changements de casse basés sur la valeur de CultureInfo.CurrentCulture. Les résultats obtenus respectent la casse et peuvent varier en fonction de la culture. Pour indiquer clairement que vous souhaitez que les changements de casse soient dépendants ou indépendants de la culture, vous devez utiliser les surcharges de ces méthodes qui exigent que vous indiquiez explicitement un paramètre culture. Pour les changements de casse dépendants de la culture, spécifiez CultureInfo.CurrentCulture pour le paramètre culture. Pour les changements de casse indépendants de la culture, spécifiez CultureInfo.InvariantCulture pour le paramètre culture.

Souvent, les chaînes sont converties dans une casse standard pour faciliter les recherches ultérieures. Lorsque les chaînes sont utilisées de cette manière, vous devez spécifier CultureInfo.InvariantCulture pour le paramètre culture, car la valeur de Thread.CurrentCulture peut changer entre le moment où la casse est modifiée et le moment où la recherche est effectuée.

Si une décision de sécurité est basée sur une opération de changement de casse, 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 opérations de chaînes dépendantes de la culture peuvent produire des résultats incohérents.

Utilisation des méthodes String.ToUpper et String.ToLower

Pour des raisons de clarté du code, il est recommandé de toujours utiliser des surcharges des méthodes String.ToUpper et String.ToLower qui vous permettent de spécifier un paramètre culture de manière explicite. Par exemple, le code suivant recherche un identificateur. L'opération key.ToLower est dépendante de la culture par défaut, mais ce comportement n'est pas clair à la lecture du code.

Exemple

Shared Function LookupKey(key As String) As Object
   Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower()];
}

Si vous voulez que l'opération key.ToLower soit indépendante de la culture, vous devez modifier l'exemple précédent comme suit, afin d'utiliser CultureInfo.InvariantCulture de manière explicite lors du changement de casse.

Shared Function LookupKey(key As String) As Object
    Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];
}

Utilisation des méthodes Char.ToUpper et Char.ToLower

Même si les méthodes Char.ToUpper et Char.ToLower présentent les mêmes caractéristiques que les méthodes String.ToUpper et String.ToLower, les seules cultures affectées sont le turc (Turquie) et l'azéri (Latin, Azerbaïdjan). Ces deux cultures sont les seules qui présentent des différences de casse pour un même caractère. Pour plus d'informations sur ce mappage de casse unique, consultez Mappages de casse et règles de tri personnalisés. Pour des raisons de clarté du code et pour garantir des résultats cohérents, il est recommandé d'utiliser toujours les surcharges de ces méthodes qui vous permettent de spécifier un paramètre culture de manière explicite.

Voir aussi

Référence

String.ToUpper

String.ToLower

Char.ToUpper

Char.ToLower

Autres ressources

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