Durchführen kulturunabhängiger Schreibungsänderungen

Die Methoden String.ToUpper, String.ToLower, Char.ToUpper und Char.ToLower stellen Überladungen bereit, die keine Parameter akzeptieren. Standardmäßig führen diese Überladungen ohne Parameter die Schreibungsänderungen auf Basis des CultureInfo.CurrentCulture-Werts durch. Die unter Berücksichtigung der Groß-/Kleinschreibung erzielten Ergebnisse variieren je nach Kultur. Um klar anzugeben, ob die Schreibungsänderungen kulturabhängig oder kulturunabhängig erfolgen sollen, empfiehlt sich die Verwendung der Überladungen dieser Methoden, für die explizit ein culture-Parameter festgelegt werden muss. Um kulturabhängige Schreibungsänderungen zu aktivieren, geben Sie CultureInfo.CurrentCulture für den culture-Parameter an. Um kulturunabhängige Schreibungsänderungen zu aktivieren, geben Sie CultureInfo.InvariantCulture für den culture-Parameter an.

Häufig werden Zeichenfolgen in eine Standardschreibweise konvertiert, um spätere Suchvorgänge zu vereinfachen. Wenn Zeichenfolgen auf diese Weise verwendet werden, sollte CultureInfo.InvariantCulture für den culture-Parameter angegeben werden, da sich der Wert von Thread.CurrentCulture zwischen dem Zeitpunkt der Schreibungsänderung und dem Zeitpunkt des Suchvorgangs ändern kann.

Wenn darüber hinaus eine Sicherheitsentscheidung auf einer Änderung von Groß- und Kleinschreibung beruht, sollte die Operation kulturunabhängig sein, um sicherzustellen, dass das Ergebnis nicht durch den Wert von CultureInfo.CurrentCulture beeinflusst wird. Unter Benutzerdefinierte Schreibungszuordnungen und Sortierregeln finden Sie ein Beispiel dafür, wie kulturabhängige Zeichenfolgenoperationen zu inkonsistenten Ergebnissen führen können.

Verwenden der String.ToUpper-Methode und der String.ToLower-Methode

Aus Gründen der Übersichtlichkeit des Codes wird empfohlen, immer die Überladungen der String.ToUpper-Methode und der String.ToLower-Methode zu verwenden, bei denen ein culture-Parameter explizit angegeben werden kann. Mit dem folgenden Code wird z. B. nach einem Bezeichner gesucht. In der Standardeinstellung ist die key.ToLower-Operation kulturabhängig, jedoch wird dieses Verhalten beim Lesen des Codes nicht deutlich.

Beispiel

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

Wenn Sie eine kulturunabhängige key.ToLower-Operation ausführen möchten, muss das vorige Beispiel so geändert werden, dass beim Ändern der Schreibweise CultureInfo.InvariantCulture explizit verwendet wird:

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)];
}

Verwenden der Char.ToUpper-Methode und der Char.ToLower-Methode

Obwohl die Char.ToUpper-Methode und die Char.ToLower -Methode über die gleichen Eigenschaften wie die String.ToUpper-Methode und die String.ToLower-Methode verfügen, sind nur die Kulturen Türkisch (Türkei) und Aserbaidschanisch (lateinisch, Aserbaidschan) betroffen. Hierbei handelt es sich um die beiden einzigen Kulturen mit Unterschieden in der Groß-/Kleinschreibung für ein einzelnes Zeichen. Weitere Informationen über diese besondere Schreibungszuordnung finden Sie unter Benutzerdefinierte Schreibungszuordnungen und Sortierregeln. Aus Gründen der Übersichtlichkeit des Codes empfiehlt es sich, immer die Überladungen dieser Methoden zu verwenden, bei denen ein culture-Parameter explizit festgelegt werden kann.

Siehe auch

Referenz

String.ToUpper

String.ToLower

Char.ToUpper

Char.ToLower

Weitere Ressourcen

Durchführen kulturunabhängiger Zeichenfolgenoperationen