Delen via


Cultuurongevoelige tekenreeksvergelijkingen uitvoeren

De methode String.Compare voert standaard cultuurgevoelige en hoofdlettergevoelige vergelijkingen uit. Deze methode bevat ook verschillende overbelastingen die een culture parameter bieden waarmee u de cultuur kunt opgeven die moet worden gebruikt, en een comparisonType parameter waarmee u de vergelijkingsregels kunt opgeven die moeten worden gebruikt. Als u deze methoden aanroept in plaats van de standaardoverbelasting, wordt de dubbelzinnigheid over de regels die in een bepaalde methode-aanroep worden gebruikt, weggenomen. Het wordt ook duidelijk of een bepaalde vergelijking cultuurgevoelig of cultuurongevoelig is.

Notitie

Beide overbelastingen van de methode String.CompareTo voeren cultuurgevoelige en hoofdlettergevoelige vergelijkingen uit; u kunt deze methode niet gebruiken om cultuurongevoelige vergelijkingen uit te voeren. Voor de duidelijkheid van code raden we u aan in plaats daarvan de methode String.Compare te gebruiken.

Geef voor cultuurgevoelige bewerkingen de StringComparison.CurrentCulture- of StringComparison.CurrentCultureIgnoreCase opsommingswaarde op als de parameter comparisonType. Als u een cultuurgevoelige vergelijking wilt uitvoeren met behulp van een andere cultuur dan de huidige cultuur, geeft u het CultureInfo-object op dat deze cultuur vertegenwoordigt als de parameter culture.

De cultuurongevoelige tekenreeksvergelijkingen die door de methode String.Compare worden ondersteund, zijn taalkundig (gebaseerd op de sorteerconventies van de invariante cultuur) of niet-taalkundige (op basis van de rangtelwaarde van de tekens in de tekenreeks). De meeste cultuurongevoelige tekenreeksvergelijkingen zijn niet-taalkundig. Geef voor deze vergelijkingen de StringComparison.Ordinal- of StringComparison.OrdinalIgnoreCase opsommingswaarde op als de parameter comparisonType. Als een beveiligingsbeslissing (zoals een gebruikersnaam of wachtwoordvergelijking) bijvoorbeeld is gebaseerd op het resultaat van een tekenreeksvergelijking, moet de bewerking niet-hoofdlettergevoelig en niet-taalkundig zijn om ervoor te zorgen dat het resultaat niet wordt beïnvloed door de conventies van een bepaalde cultuur of taal.

Gebruik cultuurgevoelige taalkundige tekenreeksvergelijking als u taalkundig relevante tekenreeksen van meerdere culturen op een consistente manier wilt verwerken. Als in uw toepassing bijvoorbeeld woorden worden weergegeven die meerdere tekensets in een keuzelijst gebruiken, kunt u woorden in dezelfde volgorde weergeven, ongeacht de huidige cultuur. Voor cultuurongevoelige taalkundige vergelijkingen definieert .NET een invariante cultuur die is gebaseerd op de taalkundige conventies van het Engels. Als u een cultuurongevoelige taalkundige vergelijking wilt uitvoeren, geeft u StringComparison.InvariantCulture of StringComparison.InvariantCultureIgnoreCase op als de parameter comparisonType.

In het volgende voorbeeld worden twee cultuurgevoelige, niet-taalkundige tekenreeksvergelijkingen uitgevoerd. De eerste is hoofdlettergevoelig, maar de tweede is niet.

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($"{StringComparison.Ordinal} comparison of '{string1}' and '{string2}': {compareResult}");

        compareResult = String.Compare(string1, string2,
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine($"{StringComparison.OrdinalIgnoreCase} comparison of '{string1}' and '{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

U kunt de Sorteergewichttabellendownloaden, een set tekstbestanden die informatie bevatten over de tekengewichten die worden gebruikt in sorteer- en vergelijkingsbewerkingen voor Windows-besturingssystemen, en de standaard unicode-sorteringselementtabel, de tabel met sorteergewicht voor Linux en macOS.

Zie ook