Durchführen kulturunabhängiger ZeichenfolgenvergleichePerforming Culture-Insensitive String Comparisons

In der Standardeinstellung führt die String.Compare-Methode kulturabhängige Vergleiche sowie Vergleiche unter Berücksichtigung der Groß-/Kleinschreibung aus.By default, the String.Compare method performs culture-sensitive and case-sensitive comparisons. Diese Methode schließt auch mehrere Überladungen ein, die einen culture-Parameter zur Angabe der zu verwendenden Kultur und einen comparisonType-Parameter zur Angabe der zu verwendenden Vergleichsregeln bereitstellen.This method also includes several overloads that provide a culture parameter that lets you specify the culture to use, and a comparisonType parameter that lets you specify the comparison rules to use. Durch den Aufruf dieser Methoden statt der Standardüberladung wird jede Mehrdeutigkeit hinsichtlich der in einem bestimmten Methodenaufruf verwendeten Regeln vermieden. Es wird verdeutlicht, ob ein bestimmter Vergleich kulturabhängig oder kulturunabhängig ist.Calling these methods instead of the default overload removes any ambiguity about the rules used in a particular method call, and makes it clear whether a particular comparison is culture-sensitive or culture-insensitive.

Hinweis

Beide Überladungen der String.CompareTo-Methode führen kulturabhängige Vergleiche durch, bei denen die Groß- und Kleinschreibung berücksichtigt wird. Sie können kulturunabhängige Vergleiche nicht mithilfe dieser Methode ausführen.Both overloads of the String.CompareTo method perform culture-sensitive and case-sensitive comparisons; you cannot use this method to perform culture-insensitive comparisons. Aus Gründen der Übersichtlichkeit des Codes wird empfohlen, stattdessen die String.Compare-Methode zu verwenden.For code clarity, we recommend that you use the String.Compare method instead.

Geben Sie für kulturabhängige Vorgänge den StringComparison.CurrentCulture-Enumerationswert oder den StringComparison.CurrentCultureIgnoreCase-Enumerationswert als comparisonType-Parameter an.For culture-sensitive operations, specify the StringComparison.CurrentCulture or StringComparison.CurrentCultureIgnoreCase enumeration value as the comparisonType parameter. Wenn Sie einen kulturabhängigen Vergleich mithilfe einer anderen festgelegten Kultur als der aktuellen Kultur ausführen möchten, geben Sie das CultureInfo-Objekt an, das diese Kultur als culture-Parameter darstellt.If you want to perform a culture-sensitive comparison using a designated culture other than the current culture, specify the CultureInfo object that represents that culture as the culture parameter.

Die kulturunabhängigen von der String.Compare-Methode unterstützten Zeichenfolgenvergleiche sind entweder linguistisch (auf Grundlage der Sortierkonventionen der invarianten Kultur) oder nicht linguistisch (auf Grundlage des Ordnungswerts der Zeichen in der Zeichenfolge).The culture-insensitive string comparisons supported by the String.Compare method are either linguistic (based on the sorting conventions of the invariant culture) or non-linguistic (based on the ordinal value of the characters in the string). Die meisten kulturunabhängigen Zeichenfolgenvergleiche sind nicht linguistisch.Most culture-insensitive string comparisons are non-linguistic. Geben Sie den StringComparison.Ordinal-Enumerationswert oder den StringComparison.OrdinalIgnoreCase-Enumerationswert als comparisonType-Parameter für diese Vergleiche an.For these comparisons, specify the StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase enumeration value as the comparisonType parameter. Wenn beispielsweise eine Sicherheitsentscheidung (z. B. ein Benutzername oder ein Kennwortvergleich) auf dem Ergebnis eines Zeichenfolgenvergleichs basiert, sollte der Vorgang kulturunabhängig und nicht linguistisch sein, um sicherzustellen, dass das Ergebnis nicht von den Konventionen einer bestimmten Kultur oder Sprache beeinflusst wird.For example, if a security decision (such as a user name or password comparison) is based on the result of a string comparison, the operation should be culture-insensitive and non-linguistic to ensure that the result is not affected by the conventions of a particular culture or language.

Verwenden Sie einen kulturunabhängigen linguistischen Zeichenfolgenvergleich, wenn Sie linguistisch relevante Zeichenfolgen mehrerer Kulturen auf eine konsistente Weise behandeln möchten.Use culture-insensitive linguistic string comparison if you want to handle linguistically relevant strings from multiple cultures in a consistent way. Wenn die Anwendung z. B. Wörter anzeigt, die mehrere Zeichensätze in einem Listenfeld verwenden, können Sie Wörter in der gleichen Reihenfolge unabhängig von der aktuellen Kultur anzeigen.For example, if your application displays words that use multiple character sets in a list box, you might want to display words in the same order regardless of the current culture. Für kulturunabhängige linguistische Vergleiche definiert .NET Framework eine invariante Kultur, die auf den linguistischen Konventionen der englischen Sprache basiert.For culture-insensitive linguistic comparisons, the .NET Framework defines an invariant culture that is based on the linguistic conventions of English. Geben Sie StringComparison.InvariantCulture oder StringComparison.InvariantCultureIgnoreCase als comparisonType-Parameter an, um einen kulturunabhängigen linguistischen Vergleich auszuführen.To perform a culture-insensitive linguistic comparison, specify StringComparison.InvariantCulture or StringComparison.InvariantCultureIgnoreCase as the comparisonType parameter.

Im folgenden Beispiel werden zwei kulturunabhängige, nicht linguistische Zeichenfolgenvergleiche ausgeführt.The following example performs two culture-insensitive, non-linguistic string comparisons. Beim ersten Beispiel wird die Groß-/Kleinschreibung beachtet, beim zweiten nicht.The first is case-sensitive, but the second is not.

using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;
        
        compareResult = String.Compare(string1, string2, 
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult); 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult); 
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer
        
        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)   
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult) 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult) 
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Sie können die aus mehreren Textdateien bestehenden Sorting Weight Tables herunterladen. Diese Textdateien enthalten Informationen zur Gewichtung der Zeichen, die bei Sortier- und Vergleichsvorgängen unter Windows-Betriebssystemen verwendet werden, sowie die Default Unicode Collation Element Table, die Sortiergewichtungstabelle für Linux und macOS.You can download the Sorting Weight Tables, a set of text files that contain information on the character weights used in sorting and comparison operations for Windows operating systems, and the Default Unicode Collation Element Table, the sort weight table for Linux and macOS.

Siehe auchSee also