Cultuurgevoelige tekenreeksvergelijkingen uitvoeren
De methode voert standaard String.Compare 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 u wilt gebruiken. Als u deze methoden aanroept in plaats van de standaardoverbelasting, wordt dubbelzinnigheid over de regels die in een bepaalde methode-aanroep worden gebruikt, verwijderd en wordt duidelijk of een bepaalde vergelijking cultuurgevoelig of cultuurgevoelig is.
Notitie
Beide overbelastingen van de String.CompareTo methode voeren cultuurgevoelige en hoofdlettergevoelige vergelijkingen uit. U kunt deze methode niet gebruiken om cultuurgevoelige vergelijkingen uit te voeren. Voor de duidelijkheid van code raden we u aan in plaats daarvan de String.Compare methode te gebruiken.
Geef voor cultuurgevoelige bewerkingen de StringComparison.CurrentCulture waarde of StringComparison.CurrentCultureIgnoreCase opsomming op als 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 die cultuur vertegenwoordigt als de culture
parameter.
De cultuurongevoelige tekenreeksvergelijkingen die door de String.Compare methode 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 cultuurgevoelige tekenreeksvergelijkingen zijn niet-taalkundig. Geef voor deze vergelijkingen de StringComparison.Ordinal waarde of StringComparison.OrdinalIgnoreCase opsomming op als de comparisonType
parameter. 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 cultuurgevoelige taalkundige vergelijking wilt uitvoeren, geeft u op StringComparison.InvariantCulture of StringComparison.InvariantCultureIgnoreCase als de comparisonType
parameter.
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("{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
U kunt de sorteergewichttabellen downloaden, een set tekstbestanden die informatie bevatten over de tekengewichten die worden gebruikt in sorteer- en vergelijkingsbewerkingen voor Windows-besturingssystemen, en de standaardtabel unicode-sorteringselement, de tabel met sorteergewichten voor Linux en macOS.