Durchführen kulturunabhängiger Zeichenfolgenvergleiche

Aktualisiert: November 2007

In der Standardeinstellung führt die Compare-Methode kulturabhängige Vergleiche sowie Vergleiche unter Berücksichtigung der Groß-/Kleinschreibung aus. Es wird jedoch eine Überladung der String.Compare-Methode bereitgestellt, mit der Sie die zu verwendende Kultur durch Angabe eines culture-Parameters festlegen können. Im Anwendungscode muss deutlich angegeben sein, ob ein kulturabhängiger oder ein kulturunabhängiger Zeichenfolgenvergleich ausgeführt werden soll. Legen Sie für kulturabhängige Operationen die CultureInfo.CurrentCulture-Eigenschaft als culture-Parameter fest. Legen Sie für kulturunabhängige Operationen die CultureInfo.InvariantCulture-Eigenschaft als culture-Parameter fest.

Wenn darüber hinaus eine Sicherheitsentscheidung auf dem Ergebnis eines Zeichenfolgenvergleichs 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 Zeichenfolgenvergleiche zu inkonsistenten Ergebnissen führen können.

Überladungen der String.CompareTo-Methode führen in der Standardeinstellung kulturabhängige Vergleiche durch, bei denen die Groß-/Kleinschreibung berücksichtigt wird. Es stehen jedoch keine Überladungen dieser Methode zur Verfügung, mit denen Sie einen kulturunabhängigen Vergleich festlegen können. Aus Gründen der Übersichtlichkeit des Codes wird empfohlen, stattdessen die String.Compare-Methode zu verwenden und für kulturabhängige Operationen CultureInfo.CurrentCulture sowie für kulturunabhängige Operationen CultureInfo.InvariantCulture festzulegen.

Verwenden der String.Compare-Methode

Die folgende Codezeile veranschaulicht, wie mithilfe der String.Compare-Methode ein kulturabhängiger Vergleich von string1 und string2 unter Berücksichtigung der Groß-/Kleinschreibung ausgeführt wird. CultureInfo.CurrentCulture wird als culture-Parameter übergeben. Hiermit wird angegeben, dass die Schreibungszuordnungen und die Sortierregeln für die CurrentCulture verwendet werden.

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

Ein vollständiges Codebeispiel, in dem die Verwendung der String.Compare-Methode zum Durchführen von kulturabhängigen Vergleichen dargestellt wird, finden Sie unter Vergleichen und Sortieren von Daten für eine bestimmte Kultur.

Um diese Operation in eine kulturunabhängige Operation umzuwandeln, müssen Sie CultureInfo.InvariantCulture als culture-Parameter angeben. Dies wird anhand des folgenden Beispielcodes dargestellt.

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

Das folgende Codebeispiel veranschaulicht das Durchführen eines kulturunabhängigen Zeichenfolgenvergleichs unter Verwendung der vorangehenden Codezeile.

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

Verwenden der String.CompareTo-Methode

Im folgenden Beispiel wird die String.CompareTo-Methode zum Durchführen eines Vergleichs von string1 und string2 verwendet. In der Standardeinstellung ist dieser Vergleich kulturabhängig, und er erfolgt unter Berücksichtigung der Groß-/Kleinschreibung.

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

Da ein culture-Parameter nicht explizit übergeben wurde, ist die Absicht im oben stehenden Beispiel nicht eindeutig. Die Anwendung sollte die String.CompareTo-Methode durch die String.Compare-Methode ersetzen, um klar anzugeben, ob die Anwendung kulturabhängig oder kulturunabhängig sein soll. Wenn ein kulturabhängiger Vergleich von string1 und string2 unter Berücksichtigung der Groß-/Kleinschreibung durchgeführt werden soll, sollte die Anwendung CultureInfo.CurrentCulture als culture-Parameter übergeben. Auf diese Weise werden die Schreibungszuordnungen und Sortierregeln für CurrentCulture verwendet, wie im folgenden Beispiel gezeigt wird.

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

Wenn ein kulturunabhängiger Vergleich von string1 und string2 unter Berücksichtigung der Groß-/Kleinschreibung durchgeführt werden soll, sollte die Anwendung CultureInfo.InvariantCulture als culture-Parameter übergeben. Auf diese Weise werden die Schreibungszuordnungen und Sortierregeln für InvariantCulture verwendet, wie im folgenden Beispiel gezeigt wird.

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

Ein vollständiges Codebeispiel, in dem die Verwendung der String.Compare-Methode zum Abrufen kulturunabhängiger Ergebnisse dargestellt wird, finden Sie unter Verwenden der String.Compare-Methode.

Siehe auch

Konzepte

Vergleichen und Sortieren von Daten für eine bestimmte Kultur

Referenz

String.Compare

String.CompareTo

Weitere Ressourcen

Durchführen kulturunabhängiger Zeichenfolgenoperationen