StringComparison Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Compare(String, String) ve Equals(Object) yöntemlerinin belirli aşırı yüklemeleri tarafından kullanılacak kültür, durum ve sıralama kurallarını belirtir.
public enum class StringComparison
public enum StringComparison
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum StringComparison
type StringComparison =
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type StringComparison =
Public Enum StringComparison
- Devralma
- Öznitelikler
Alanlar
| Name | Değer | Description |
|---|---|---|
| CurrentCulture | 0 | Kültüre duyarlı sıralama kurallarını ve geçerli kültürü kullanarak dizeleri karşılaştırın. |
| CurrentCultureIgnoreCase | 1 | Kültüre duyarlı sıralama kurallarını, geçerli kültürü kullanarak ve karşılaştırılan dizelerin büyük/küçük harflerini yoksayarak dizeleri karşılaştırın. |
| InvariantCulture | 2 | Kültüre duyarlı sıralama kurallarını ve sabit kültürü kullanarak dizeleri karşılaştırın. |
| InvariantCultureIgnoreCase | 3 | Kültüre duyarlı sıralama kurallarını, sabit kültürü kullanarak ve karşılaştırılan dizelerin büyük/küçük harflerini yoksayarak dizeleri karşılaştırın. |
| Ordinal | 4 | Sıralı (ikili) sıralama kurallarını kullanarak dizeleri karşılaştırın. |
| OrdinalIgnoreCase | 5 | Sıralı (ikili) sıralama kurallarını kullanarak ve karşılaştırılan dizelerin büyük/küçük harf durumunu yoksayarak dizeleri karşılaştırın. |
Örnekler
Aşağıdaki örnek, numaralandırmanın her bir üyesini StringComparison kullanarak üç dize kümesini karşılaştırır. Karşılaştırmalarda İngilizce (ABD), Tayca (Tayland) ve Türkçe (Türkiye) kültürlerinin kuralları kullanılır. "a" ve "a-" dizelerinin "th-TH" kültüründe eşdeğer olarak kabul edildiğini, ancak diğer kültürlerde değil, "i" ve "İ"nin ise diğer kültürlerde büyük/küçük harf yoksayıldığında "tr-TR" kültüründe eşdeğer olarak kabul edildiğini unutmayın.
using System;
using System.Globalization;
using System.Threading;
public class Example3
{
public static void Main()
{
String[] cultureNames = { "en-US", "th-TH", "tr-TR" };
String[] strings1 = { "a", "i", "case", };
String[] strings2 = { "a-", "\u0130", "Case" };
StringComparison[] comparisons = (StringComparison[])Enum.GetValues(typeof(StringComparison));
foreach (var cultureName in cultureNames)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName);
Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name);
for (int ctr = 0; ctr <= strings1.GetUpperBound(0); ctr++)
{
foreach (var comparison in comparisons)
Console.WriteLine(" {0} = {1} ({2}): {3}", strings1[ctr],
strings2[ctr], comparison,
String.Equals(strings1[ctr], strings2[ctr], comparison));
Console.WriteLine();
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// Current Culture: en-US
// a = a- (CurrentCulture): False
// a = a- (CurrentCultureIgnoreCase): False
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): False
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
//
// Current Culture: th-TH
// a = a- (CurrentCulture): True
// a = a- (CurrentCultureIgnoreCase): True
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): False
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
//
// Current Culture: tr-TR
// a = a- (CurrentCulture): False
// a = a- (CurrentCultureIgnoreCase): False
// a = a- (InvariantCulture): False
// a = a- (InvariantCultureIgnoreCase): False
// a = a- (Ordinal): False
// a = a- (OrdinalIgnoreCase): False
//
// i = İ (CurrentCulture): False
// i = İ (CurrentCultureIgnoreCase): True
// i = İ (InvariantCulture): False
// i = İ (InvariantCultureIgnoreCase): False
// i = İ (Ordinal): False
// i = İ (OrdinalIgnoreCase): False
//
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
open System
open System.Globalization
open System.Threading
let cultureNames =
[| "en-US"; "se-SE" |]
let strings1 =
[| "case"; "encyclopædia"
"encyclopædia"; "Archæology" |]
let strings2 =
[| "Case"; "encyclopaedia"
"encyclopedia"; "ARCHÆOLOGY" |]
let comparisons =
Enum.GetValues typeof<StringComparison> :?> StringComparison[]
for cultureName in cultureNames do
Thread.CurrentThread.CurrentCulture <- CultureInfo.CreateSpecificCulture cultureName
printfn $"Current Culture: {CultureInfo.CurrentCulture.Name}"
for i = 0 to strings1.GetUpperBound 0 do
for comparison in comparisons do
printfn $" {strings1[i]} = {strings2[i]} ({comparison}): {String.Equals(strings1[i], strings2[i], comparison)}"
printfn ""
printfn ""
// The example displays the following output:
// Current Culture: en-US
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
// encyclopædia = encyclopaedia (CurrentCulture): True
// encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
// encyclopædia = encyclopaedia (InvariantCulture): True
// encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
// encyclopædia = encyclopaedia (Ordinal): False
// encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//
// encyclopædia = encyclopedia (CurrentCulture): False
// encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopedia (InvariantCulture): False
// encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
// encyclopædia = encyclopedia (Ordinal): False
// encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//
// Archæology = ARCHÆOLOGY (CurrentCulture): False
// Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (InvariantCulture): False
// Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (Ordinal): False
// Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
//
//
// Current Culture: se-SE
// case = Case (CurrentCulture): False
// case = Case (CurrentCultureIgnoreCase): True
// case = Case (InvariantCulture): False
// case = Case (InvariantCultureIgnoreCase): True
// case = Case (Ordinal): False
// case = Case (OrdinalIgnoreCase): True
//
// encyclopædia = encyclopaedia (CurrentCulture): False
// encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopaedia (InvariantCulture): True
// encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
// encyclopædia = encyclopaedia (Ordinal): False
// encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
//
// encyclopædia = encyclopedia (CurrentCulture): False
// encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
// encyclopædia = encyclopedia (InvariantCulture): False
// encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
// encyclopædia = encyclopedia (Ordinal): False
// encyclopædia = encyclopedia (OrdinalIgnoreCase): False
//
// Archæology = ARCHÆOLOGY (CurrentCulture): False
// Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (InvariantCulture): False
// Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
// Archæology = ARCHÆOLOGY (Ordinal): False
// Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
Imports System.Globalization
Imports System.Threading
Module Example
Public Sub Main()
Dim cultureNames() As String = { "en-US", "se-SE" }
Dim strings1() As String = { "case", "encyclopædia",
"encyclopædia", "Archæology" }
Dim strings2() As String = { "Case", "encyclopaedia",
"encyclopedia" , "ARCHÆOLOGY" }
Dim comparisons() As StringComparison = CType([Enum].GetValues(GetType(StringComparison)),
StringComparison())
For Each cultureName In cultureNames
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName)
Console.WriteLine("Current Culture: {0}", CultureInfo.CurrentCulture.Name)
For ctr As Integer = 0 To strings1.GetUpperBound(0)
For Each comparison In comparisons
Console.WriteLine(" {0} = {1} ({2}): {3}", strings1(ctr),
strings2(ctr), comparison,
String.Equals(strings1(ctr), strings2(ctr), comparison))
Next
Console.WriteLine()
Next
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Current Culture: en-US
' case = Case (CurrentCulture): False
' case = Case (CurrentCultureIgnoreCase): True
' case = Case (InvariantCulture): False
' case = Case (InvariantCultureIgnoreCase): True
' case = Case (Ordinal): False
' case = Case (OrdinalIgnoreCase): True
'
' encyclopædia = encyclopaedia (CurrentCulture): True
' encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): True
' encyclopædia = encyclopaedia (InvariantCulture): True
' encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
' encyclopædia = encyclopaedia (Ordinal): False
' encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'
' encyclopædia = encyclopedia (CurrentCulture): False
' encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopedia (InvariantCulture): False
' encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
' encyclopædia = encyclopedia (Ordinal): False
' encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'
' Archæology = ARCHÆOLOGY (CurrentCulture): False
' Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (InvariantCulture): False
' Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (Ordinal): False
' Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
'
'
' Current Culture: se-SE
' case = Case (CurrentCulture): False
' case = Case (CurrentCultureIgnoreCase): True
' case = Case (InvariantCulture): False
' case = Case (InvariantCultureIgnoreCase): True
' case = Case (Ordinal): False
' case = Case (OrdinalIgnoreCase): True
'
' encyclopædia = encyclopaedia (CurrentCulture): False
' encyclopædia = encyclopaedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopaedia (InvariantCulture): True
' encyclopædia = encyclopaedia (InvariantCultureIgnoreCase): True
' encyclopædia = encyclopaedia (Ordinal): False
' encyclopædia = encyclopaedia (OrdinalIgnoreCase): False
'
' encyclopædia = encyclopedia (CurrentCulture): False
' encyclopædia = encyclopedia (CurrentCultureIgnoreCase): False
' encyclopædia = encyclopedia (InvariantCulture): False
' encyclopædia = encyclopedia (InvariantCultureIgnoreCase): False
' encyclopædia = encyclopedia (Ordinal): False
' encyclopædia = encyclopedia (OrdinalIgnoreCase): False
'
' Archæology = ARCHÆOLOGY (CurrentCulture): False
' Archæology = ARCHÆOLOGY (CurrentCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (InvariantCulture): False
' Archæology = ARCHÆOLOGY (InvariantCultureIgnoreCase): True
' Archæology = ARCHÆOLOGY (Ordinal): False
' Archæology = ARCHÆOLOGY (OrdinalIgnoreCase): True
Açıklamalar
Sabit StringComparison listesi, dize karşılaştırmasının geçerli kültürü mü yoksa sabit kültürü mü, sözcük veya sıralı sıralama kurallarını mı kullanacağını ve büyük/küçük harfe duyarlı mı yoksa büyük/küçük harfe duyarlı mı olacağını belirtmek için kullanılır.
Önemli
, veya String.IndexOfgibi String.CompareString.Equalsbir dize karşılaştırma yöntemini çağırdığınızda, yöntemin gerçekleştirdiği karşılaştırma türünü belirtebilmeniz için her zaman türünde StringComparison bir parametre içeren bir aşırı yükleme çağırmalısınız. Daha fazla bilgi için, Dizeleri Kullanmak için En İyi Yöntemler bölümüne bakın.
Sözcük sıralama kurallarını kullanan bir işlem, belirli nonalfanumerik Unicode karakterlerinin kendilerine özel ağırlıklar atanmış olabileceği kültüre duyarlı bir karşılaştırma gerçekleştirir. Sözcük sıralama kurallarını ve belirli bir kültürün kurallarını kullanarak, kısa çizgi ("-"), "coop" ve "co-op" değerlerinin sıralanmış bir listede yan yana görünmesi için çok küçük bir ağırlığa sahip olabilir.
Uyarı
Yalnızca Linux ve macOS sistemlerinde çalışan .NET Core: C ve Posix kültürleri için harmanlama davranışı her zaman büyük/küçük harfe duyarlıdır çünkü bu kültürler beklenen Unicode harmanlama sırasını kullanmaz. Kültüre duyarlı, büyük/küçük harfe duyarlı olmayan sıralama işlemleri gerçekleştirmek için C veya Posix dışında bir kültür kullanmanızı öneririz.
Sıralı sıralama kuralları kullanan bir işlem, dizedeki her Char birinin sayısal değerini (Unicode kod noktası) temel alan bir karşılaştırma gerçekleştirir. Sıralı karşılaştırma hızlıdır ancak kültüre duyarsızdır. Unicode karakterleriyle (U+) başlayan dizeleri sıralamak için sıralı sıralama kuralları kullandığınızda, xxxx değeri sayısal olarak y'den küçükse U+xxxx dizesi U+y dizesinden önce gelir.
Karşılaştırmalar hakkında daha fazla bilgi için sınıf açıklamalarına bakın System.String . Kültür hakkında daha fazla bilgi için sınıf açıklamalarına bakın System.Globalization.CultureInfo . Sıralı veya kültüre duyarlı karşılaştırma kurallarının veya sabit kültürün kurallarının ne zaman kullanılacağına ilişkin yönergeler için bkz. Dizeleri Kullanmak için En İyi Yöntemler. 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ı için bkz. Ağırlık Tablolarını Sıralama. Linux ve macOS için sıralama ağırlığı tablosu için bkz. Varsayılan Unicode Harmanlama Öğesi Tablosu.