Kültüre duyarsız dize karşılaştırmaları gerçekleştirme
Varsayılan olarak, String.Compare yöntemi kültüre duyarlı ve büyük/küçük harfe duyarlı karşılaştırmalar gerçekleştirir. Bu yöntem, kullanılacak kültürü belirtmenize olanak tanıyan bir culture
parametre sağlayan çeşitli aşırı yüklemeler ve kullanılacak karşılaştırma kurallarını belirtmenize olanak tanıyan bir comparisonType
parametre de içerir. Varsayılan tekrar yükleme yerine bu yöntemleri çağırmak, belirli bir yöntem çağrısında kullanılan kurallarla ilgili tüm belirsizlikleri kaldırır ve belirli bir karşılaştırmanın kültüre duyarlı veya kültüre duyarsız olduğunu netleştirir.
Not
Yöntemin String.CompareTo her iki aşırı yüklemesi de kültüre duyarlı ve büyük/küçük harfe duyarlı karşılaştırmalar gerçekleştirir; kültüre duyarsız karşılaştırmalar yapmak için bu yöntemi kullanamazsınız. Kod netliği için bunun yerine yöntemini kullanmanızı String.Compare öneririz.
Kültüre duyarlı işlemler için parametre olarak comparisonType
veya StringComparison.CurrentCultureIgnoreCase numaralandırma değerini belirtinStringComparison.CurrentCulture. Geçerli kültür dışında belirlenmiş bir kültürü kullanarak kültüre duyarlı bir karşılaştırma yapmak istiyorsanız, parametre olarak culture
bu kültürü temsil eden nesneyi belirtinCultureInfo.
yöntemi tarafından String.Compare desteklenen kültüre duyarsız dize karşılaştırmaları, dilsel (sabit kültürün sıralama kurallarına göre) veya dilsel olmayandır (dizedeki karakterlerin sıralı değerine göre). Kültüre duyarsız dize karşılaştırmalarının çoğu dilsel değildir. Bu karşılaştırmalar için parametre olarak comparisonType
veya StringComparison.OrdinalIgnoreCase numaralandırma değerini belirtinStringComparison.Ordinal. Örneğin, bir güvenlik kararı (bir kullanıcı adı ve parola karşılaştırması gibi) bir dize karşılaştırmasının sonucuna dayalıysa, sonucun belirli bir kültürün veya dilin kurallarından etkilenmemesi için, işlemin kültüre duyarsız olması ve dilsel olmaması gerekir.
Birden çok kültürden alınan dilsel olarak gerekli dizeleri tutarlı bir şekilde işlemek isterseniz, kültüre duyarsız dile dize karşılaştırması kullanın. Örneğin, uygulamanız bir liste kutusunda birden çok karakter kümesi kullanan sözcükler görüntülerse, geçerli kültüre bakılmaksızın, sözcükleri aynı sırada görüntülemek istersiniz. Kültüre duyarsız dil karşılaştırmaları için .NET, İngilizcenin dilsel kurallarını temel alan sabit bir kültür tanımlar. Kültüre duyarsız dil karşılaştırması yapmak için parametresi olarak veya StringComparison.InvariantCultureIgnoreCase belirtin StringComparison.InvariantCulturecomparisonType
.
Aşağıdaki örnek, iki kültüre duyarsız, dilsel olmayan dize karşılaştırması gerçekleştirir. Birincisi büyük/küçük harfe duyarlıdır, ancak ikinci değildir.
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
Sıralama Ağırlığı Tablolarını, Windows işletim sistemleri için sıralama ve karşılaştırma işlemlerinde kullanılan karakter ağırlıkları hakkında bilgi içeren bir dizi metin dosyasını ve Linux ve macOS için sıralama ağırlığı tablosu olan Varsayılan Unicode Harmanlama Öğesi Tablosu'nu indirebilirsiniz.