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. Im Abschnitt „Zeichenfolgenvergleiche mit der aktuellen Kultur“ im Artikel Bewährte Methoden für die Verwendung von Zeichenfolgen in .NET finden Sie ein Beispiel, das veranschaulicht, wie kulturabhängige Zeichenfolgenoperationen zu inkonsistenten Ergebnissen führen können.
String.ToUpper und String.ToLower
Aus Gründen der Übersichtlichkeit des Codes empfiehlt es sich, immer Überladungen der Methoden String.ToUpper
und String.ToLower
zu verwenden, mit denen Sie eine Kultur explizit angeben können. 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 einen kulturunabhängigen key.ToLower
-Vorgang ausführen möchten, ändern Sie das vorige Beispiel so, 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)];
}
Char.ToUpper und Char.ToLower
Obwohl die Methoden Char.ToUpper
und Char.ToLower
über die gleichen Eigenschaften wie die Methoden String.ToUpper
und String.ToLower
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 Besonderheit bei der Groß-/Kleinschreibung finden Sie im Abschnitt „Groß-/Kleinschreibung“ in der Dokumentation zur String-Klasse. Aus Gründen der Übersichtlichkeit des Codes und zur Gewährleistung konsistenter Ergebnisse, sollten Sie immer die Überladungen dieser Methoden verwenden, die einen CultureInfo-Parameter akzeptieren.