Прочитать на английском

Поделиться через


StringComparer Класс

Определение

Представляет операции сравнения строк, в которых используются правила сравнения с учетом регистра, языка и региональных параметров или правил сравнения по порядковому номеру.

C#
public abstract class StringComparer : System.Collections.Generic.IComparer<string>, System.Collections.Generic.IEqualityComparer<string>, System.Collections.IComparer, System.Collections.IEqualityComparer
C#
[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
Наследование
StringComparer
Атрибуты
Реализации

Примеры

В следующем примере показаны свойства и Create метод StringComparer класса . В этом примере показано, как различные StringComparer объекты сортируют три версии латинской буквы I.

C#
// 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

*/

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для StringComparer.

Конструкторы

StringComparer()

Инициализирует новый экземпляр класса StringComparer.

Свойства

CurrentCulture

Получает объект StringComparer, выполняющий сравнение строк с учетом регистра, используя правила сравнения строк по словам для текущего языка и региональных параметров.

CurrentCultureIgnoreCase

Получает объект StringComparer, выполняющий сравнения строк без учета регистра, используя правила сравнения строк по словам для текущего языка и региональных параметров.

InvariantCulture

Возвращает объект StringComparer, выполняющий сравнение строк с учетом регистра, используя правила сравнения строк по словам для инвариантного языка и региональных параметров.

InvariantCultureIgnoreCase

Возвращает объект StringComparer, выполняющий сравнение строк без учета регистра, используя правила сравнения строк по словам для инвариантного языка и региональных параметров.

Ordinal

Возвращает объект StringComparer, выполняющий сравнение строк по порядковому номеру с учетом регистра.

OrdinalIgnoreCase

Возвращает объект StringComparer, выполняющий сравнение строк по порядковому номеру без учета регистра.

Методы

Compare(Object, Object)

При переопределении в производном классе сравнивает два объекта и возвращает сведения об их относительном порядке сортировки.

Compare(String, String)

При переопределении в производном классе сравнивает две строки и возвращает сведения об их относительном порядке сортировки.

Create(CultureInfo, Boolean)

Создает объект StringComparer и сравнивает строки в соответствии с правилами заданного языка и региональных параметров.

Create(CultureInfo, CompareOptions)

Создает объект StringComparer, который сравнивает строки в соответствии с правилами заданного языка и региональных параметров и параметрами строки.

Equals(Object, Object)

При переопределении в производном классе позволяет определить, равны ли два объекта.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Equals(String, String)

При переопределении в производном классе позволяет определить, равны ли две строки.

FromComparison(StringComparison)

Преобразует указанный экземпляр StringComparison в экземпляр StringComparer.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetHashCode(Object)

При переопределении в производном классе возвращает хэш-код для указанного объекта.

GetHashCode(String)

При переопределении в производном классе возвращает хэш-код указанной строки.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsWellKnownCultureAwareComparer(IEqualityComparer<String>, CompareInfo, CompareOptions)

Определяет, является ли указанный IEqualityComparer<T> объект хорошо известным строковым компаратором с учетом языка и региональных параметров.

IsWellKnownOrdinalComparer(IEqualityComparer<String>, Boolean)

Определяет, является ли указанный IEqualityComparer<T> компаратором хорошо известной порядковой строки.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IComparer.Compare(Object, Object)

Сравнение двух объектов и возврат значения, указывающего, является ли один объект меньшим, равным или большим другого.

IEqualityComparer.Equals(Object, Object)

Определяет, равны ли два указанных объекта.

IEqualityComparer.GetHashCode(Object)

Возвращает хэш-код указанного объекта.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел