StringComparer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un'operazione di confronto tra stringhe che usa regole specifiche di confronto basate sull'uso di maiuscole e minuscole e specifiche delle impostazioni cultura o per ordinale.
public ref class StringComparer abstract : System::Collections::Generic::IComparer<System::String ^>, System::Collections::Generic::IEqualityComparer<System::String ^>, System::Collections::IComparer, System::Collections::IEqualityComparer
public abstract class StringComparer : System.Collections.Generic.IComparer<string>, System.Collections.Generic.IEqualityComparer<string>, System.Collections.IComparer, System.Collections.IEqualityComparer
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class StringComparer : System.Collections.Generic.IComparer<string>, System.Collections.Generic.IEqualityComparer<string>, System.Collections.IComparer, System.Collections.IEqualityComparer
type StringComparer = class
interface IComparer<string>
interface IEqualityComparer<string>
interface IComparer
interface IEqualityComparer
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type StringComparer = class
interface IComparer
interface IEqualityComparer
interface IComparer<string>
interface IEqualityComparer<string>
Public MustInherit Class StringComparer
Implements IComparer, IComparer(Of String), IEqualityComparer, IEqualityComparer(Of String)
- Ereditarietà
-
StringComparer
- Attributi
- Implementazioni
Esempio
Nell'esempio seguente vengono illustrate le proprietà e il Create metodo della StringComparer classe . Nell'esempio viene illustrato il modo in cui oggetti diversi StringComparer ordinano tre versioni della lettera latina I.
// This example demonstrates members of the
// System::StringComparer class.
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
using namespace System::Globalization;
using namespace System::Threading;
void Display(List<String^>^ stringList, String^ title)
{
Char firstChar;
int codePoint;
Console::WriteLine(title);
for each (String^ s in stringList)
{
firstChar = s[0];
codePoint = Convert::ToInt32(firstChar);
Console::WriteLine("0x{0:x}", codePoint);
}
Console::WriteLine();
}
int main()
{
// Create a list of string.
List<String^>^ stringList = gcnew List<String^>();
// Get the tr-TR (Turkish-Turkey) culture.
CultureInfo^ turkishCulture = gcnew CultureInfo("tr-TR");
// Get the culture that is associated with the current thread.
CultureInfo^ currentCulture = Thread::CurrentThread->CurrentCulture;
// Get the standard StringComparers.
StringComparer^ invariant = StringComparer::InvariantCulture;
StringComparer^ invariantIgnoreCase =
StringComparer::InvariantCultureIgnoreCase;
StringComparer^ current = StringComparer::CurrentCulture;
StringComparer^ currentIgnoreCase =
StringComparer::CurrentCultureIgnoreCase;
StringComparer^ ordinal = StringComparer::Ordinal;
StringComparer^ ordinalIgnoreCase = StringComparer::OrdinalIgnoreCase;
// Create a StringComparer that uses the Turkish culture and ignores
// case.
StringComparer^ turkishIgnoreCase =
StringComparer::Create(turkishCulture, true);
// Define three strings consisting of different versions of the
// letter I. LATIN CAPITAL LETTER I (U+0049)
String^ capitalLetterI = "I";
// LATIN SMALL LETTER I (U+0069)
String^ smallLetterI = "i";
// LATIN SMALL LETTER DOTLESS I (U+0131)
String^ smallLetterDotlessI = L"\u0131";
// Add the three strings to the list.
stringList->Add(capitalLetterI);
stringList->Add(smallLetterI);
stringList->Add(smallLetterDotlessI);
// Display the original list order.
Display(stringList, "The original order of the list entries...");
// Sort the list using the invariant culture.
stringList->Sort(invariant);
Display(stringList, "Invariant culture...");
stringList->Sort(invariantIgnoreCase);
Display(stringList, "Invariant culture, ignore case...");
// Sort the list using the current culture.
Console::WriteLine("The current culture is \"{0}\".",
currentCulture->Name);
stringList->Sort(current);
Display(stringList, "Current culture...");
stringList->Sort(currentIgnoreCase);
Display(stringList, "Current culture, ignore case...");
// Sort the list using the ordinal value of the character code points.
stringList->Sort(ordinal);
Display(stringList, "Ordinal...");
stringList->Sort(ordinalIgnoreCase);
Display(stringList, "Ordinal, ignore case...");
// Sort the list using the Turkish culture, which treats LATIN SMALL
// LETTER DOTLESS I differently than LATIN SMALL LETTER I.
stringList->Sort(turkishIgnoreCase);
Display(stringList, "Turkish culture, ignore case...");
}
/*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*/
// This example demonstrates members of the
// System.StringComparer class.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
class Sample
{
public static void Main()
{
// Create a list of string.
List<string> list = new List<string>();
// Get the tr-TR (Turkish-Turkey) culture.
CultureInfo turkish = new CultureInfo("tr-TR");
// Get the culture that is associated with the current thread.
CultureInfo thisCulture = Thread.CurrentThread.CurrentCulture;
// Get the standard StringComparers.
StringComparer invCmp = StringComparer.InvariantCulture;
StringComparer invICCmp = StringComparer.InvariantCultureIgnoreCase;
StringComparer currCmp = StringComparer.CurrentCulture;
StringComparer currICCmp = StringComparer.CurrentCultureIgnoreCase;
StringComparer ordCmp = StringComparer.Ordinal;
StringComparer ordICCmp = StringComparer.OrdinalIgnoreCase;
// Create a StringComparer that uses the Turkish culture and ignores case.
StringComparer turkICComp = StringComparer.Create(turkish, true);
// Define three strings consisting of different versions of the letter I.
// LATIN CAPITAL LETTER I (U+0049)
string capitalLetterI = "I";
// LATIN SMALL LETTER I (U+0069)
string smallLetterI = "i";
// LATIN SMALL LETTER DOTLESS I (U+0131)
string smallLetterDotlessI = "\u0131";
// Add the three strings to the list.
list.Add(capitalLetterI);
list.Add(smallLetterI);
list.Add(smallLetterDotlessI);
// Display the original list order.
Display(list, "The original order of the list entries...");
// Sort the list using the invariant culture.
list.Sort(invCmp);
Display(list, "Invariant culture...");
list.Sort(invICCmp);
Display(list, "Invariant culture, ignore case...");
// Sort the list using the current culture.
Console.WriteLine("The current culture is \"{0}\".", thisCulture.Name);
list.Sort(currCmp);
Display(list, "Current culture...");
list.Sort(currICCmp);
Display(list, "Current culture, ignore case...");
// Sort the list using the ordinal value of the character code points.
list.Sort(ordCmp);
Display(list, "Ordinal...");
list.Sort(ordICCmp);
Display(list, "Ordinal, ignore case...");
// Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
// DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort(turkICComp);
Display(list, "Turkish culture, ignore case...");
}
public static void Display(List<string> lst, string title)
{
Char c;
int codePoint;
Console.WriteLine(title);
foreach (string s in lst)
{
c = s[0];
codePoint = Convert.ToInt32(c);
Console.WriteLine("0x{0:x}", codePoint);
}
Console.WriteLine();
}
}
/*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*/
// This example demonstrates members of the
// System.StringComparer class.
open System
open System.Globalization
open System.Threading
let display (lst: ResizeArray<string>) title =
printfn $"%s{title}"
for s in lst do
let c = s[0]
let codePoint = Convert.ToInt32 c
printfn $"0x{codePoint:x}"
printfn ""
// Create a list of string.
let list = ResizeArray()
// Get the tr-TR (Turkish-Turkey) culture.
let turkish = CultureInfo "tr-TR"
// Get the culture that is associated with the current thread.
let thisCulture = Thread.CurrentThread.CurrentCulture
// Get the standard StringComparers.
let invCmp = StringComparer.InvariantCulture
let invICCmp = StringComparer.InvariantCultureIgnoreCase
let currCmp = StringComparer.CurrentCulture
let currICCmp = StringComparer.CurrentCultureIgnoreCase
let ordCmp = StringComparer.Ordinal
let ordICCmp = StringComparer.OrdinalIgnoreCase
// Create a StringComparer that uses the Turkish culture and ignores case.
let turkICComp = StringComparer.Create(turkish, true)
// Define three strings consisting of different versions of the letter I.
// LATIN CAPITAL LETTER I (U+0049)
let capitalLetterI = "I"
// LATIN SMALL LETTER I (U+0069)
let smallLetterI = "i"
// LATIN SMALL LETTER DOTLESS I (U+0131)
let smallLetterDotlessI = "\u0131"
// Add the three strings to the list.
list.Add capitalLetterI
list.Add smallLetterI
list.Add smallLetterDotlessI
// Display the original list order.
display list "The original order of the list entries..."
// Sort the list using the invariant culture.
list.Sort invCmp
display list "Invariant culture..."
list.Sort invICCmp
display list "Invariant culture, ignore case..."
// Sort the list using the current culture.
printfn $"The current culture is \"{thisCulture.Name}\"."
list.Sort currCmp
display list "Current culture..."
list.Sort currICCmp
display list "Current culture, ignore case..."
// Sort the list using the ordinal value of the character code points.
list.Sort ordCmp
display list "Ordinal..."
list.Sort ordICCmp
display list "Ordinal, ignore case..."
// Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
// DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort turkICComp
display list "Turkish culture, ignore case..."
(*
This code example produces the following results:
The original order of the list entries...
0x49
0x69
0x131
Invariant culture...
0x69
0x49
0x131
Invariant culture, ignore case...
0x49
0x69
0x131
The current culture is "en-US".
Current culture...
0x69
0x49
0x131
Current culture, ignore case...
0x49
0x69
0x131
Ordinal...
0x49
0x69
0x131
Ordinal, ignore case...
0x69
0x49
0x131
Turkish culture, ignore case...
0x131
0x49
0x69
*)
' This code example demonstrates members of the System.StringComparer class.
Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Threading
Class Sample
Public Shared Sub Main()
' Create a list of string.
Dim list As New List(Of String)
' Get the tr-TR (Turkish-Turkey) culture.
Dim turkish As New CultureInfo("tr-TR")
' Get the culture that is associated with the current thread.
Dim thisCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
' Get the standard StringComparers.
Dim invCmp As StringComparer = StringComparer.InvariantCulture
Dim invICCmp As StringComparer = StringComparer.InvariantCultureIgnoreCase
Dim currCmp As StringComparer = StringComparer.CurrentCulture
Dim currICCmp As StringComparer = StringComparer.CurrentCultureIgnoreCase
Dim ordCmp As StringComparer = StringComparer.Ordinal
Dim ordICCmp As StringComparer = StringComparer.OrdinalIgnoreCase
' Create a StringComparer that uses the Turkish culture and ignores case.
Dim turkICComp As StringComparer = StringComparer.Create(turkish, True)
' Define three strings consisting of different versions of the letter I.
' LATIN CAPITAL LETTER I (U+0049)
Dim capitalLetterI As String = "I"
' LATIN SMALL LETTER I (U+0069)
Dim smallLetterI As String = "i"
' LATIN SMALL LETTER DOTLESS I (U+0131)
Dim smallLetterDotlessI As String = "ı"
' Add the three strings to the list.
list.Add(capitalLetterI)
list.Add(smallLetterI)
list.Add(smallLetterDotlessI)
' Display the original list order.
Display(list, "The original order of the list entries...")
' Sort the list using the invariant culture.
list.Sort(invCmp)
Display(list, "Invariant culture...")
list.Sort(invICCmp)
Display(list, "Invariant culture, ignore case...")
' Sort the list using the current culture.
Console.WriteLine("The current culture is ""{0}"".", thisCulture.Name)
list.Sort(currCmp)
Display(list, "Current culture...")
list.Sort(currICCmp)
Display(list, "Current culture, ignore case...")
' Sort the list using the ordinal value of the character code points.
list.Sort(ordCmp)
Display(list, "Ordinal...")
list.Sort(ordICCmp)
Display(list, "Ordinal, ignore case...")
' Sort the list using the Turkish culture, which treats LATIN SMALL LETTER
' DOTLESS I differently than LATIN SMALL LETTER I.
list.Sort(turkICComp)
Display(list, "Turkish culture, ignore case...")
End Sub
Public Shared Sub Display(ByVal lst As List(Of String), ByVal title As String)
Dim c As Char
Dim s As String
Dim codePoint As Integer
Console.WriteLine(title)
For Each s In lst
c = s(0)
codePoint = Convert.ToInt32(c)
Console.WriteLine("0x{0:x}", codePoint)
Next s
Console.WriteLine()
End Sub
End Class
'This code example produces the following results:
'
'The original order of the list entries...
'0x49
'0x69
'0x131
'
'Invariant culture...
'0x69
'0x49
'0x131
'
'Invariant culture, ignore case...
'0x49
'0x69
'0x131
'
'The current culture is "en-US".
'Current culture...
'0x69
'0x49
'0x131
'
'Current culture, ignore case...
'0x49
'0x69
'0x131
'
'Ordinal...
'0x49
'0x69
'0x131
'
'Ordinal, ignore case...
'0x69
'0x49
'0x131
'
'Turkish culture, ignore case...
'0x131
'0x49
'0x69
'
Commenti
Per altre informazioni su questa API, vedere Note sulle API supplementari per StringComparer.
Costruttori
StringComparer() |
Inizializza una nuova istanza della classe StringComparer. |
Proprietà
CurrentCulture |
Ottiene un oggetto StringComparer che esegue un confronto tra stringhe con distinzione tra maiuscole e minuscole usando le regole di confronto per parola delle impostazioni cultura correnti. |
CurrentCultureIgnoreCase |
Ottiene un oggetto StringComparer che esegue un confronto tra stringhe con distinzione tra maiuscole e minuscole usando le regole di confronto per parola delle impostazioni cultura correnti. |
InvariantCulture |
Ottiene un oggetto StringComparer che esegue un confronto tra stringhe con distinzione tra maiuscole e minuscole utilizzando le regole di confronto per parola delle impostazioni cultura invarianti. |
InvariantCultureIgnoreCase |
Ottiene un oggetto StringComparer che esegue un confronto tra stringhe senza distinzione tra maiuscole e minuscole utilizzando le regole di confronto per parola delle impostazioni cultura invarianti. |
Ordinal |
Ottiene un oggetto StringComparer che esegue un confronto ordinale tra stringhe con distinzione tra maiuscole e minuscole. |
OrdinalIgnoreCase |
Ottiene un oggetto StringComparer che esegue un confronto ordinale tra stringhe senza distinzione tra maiuscole e minuscole. |
Metodi
Compare(Object, Object) |
Quando sottoposto a override in una classe derivata, confronta due oggetti e restituisce un'indicazione del relativo ordinamento. |
Compare(String, String) |
Quando sottoposto a override in una classe derivata, confronta due stringhe e restituisce un'indicazione del relativo ordinamento. |
Create(CultureInfo, Boolean) |
Crea un oggetto StringComparer che confronta le stringhe secondo le regole delle impostazioni cultura specificate. |
Create(CultureInfo, CompareOptions) |
Crea un oggetto StringComparer che confronta le stringhe secondo le regole delle impostazioni cultura specificate e le opzioni per le stringhe. |
Equals(Object, Object) |
Quando sottoposto a override in una classe derivata, indica se due oggetti sono uguali. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Equals(String, String) |
Quando sottoposto a override in una classe derivata, indica se due stringhe sono uguali. |
FromComparison(StringComparison) |
Converte l'istanza di StringComparison specificata in un'istanza di StringComparer. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetHashCode(Object) |
Quando sottoposto a override in una classe derivata, ottiene il codice hash per l'oggetto specificato. |
GetHashCode(String) |
Quando sottoposto a override in una classe derivata, ottiene il codice hash per la stringa specificata. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsWellKnownCultureAwareComparer(IEqualityComparer<String>, CompareInfo, CompareOptions) |
Determina se l'oggetto specificato IEqualityComparer<T> è un operatore di confronto di stringhe con riconoscimento delle impostazioni cultura noto. |
IsWellKnownOrdinalComparer(IEqualityComparer<String>, Boolean) |
Determina se l'oggetto specificato IEqualityComparer<T> è un operatore di confronto di stringhe ordinali noto. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IComparer.Compare(Object, Object) |
Confronta due oggetti e restituisce un valore indicante se uno è minore, uguale o maggiore dell'altro. |
IEqualityComparer.Equals(Object, Object) |
Determina se gli oggetti specificati sono uguali. |
IEqualityComparer.GetHashCode(Object) |
Viene restituito un codice hash per l'oggetto specificato. |