Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По умолчанию метод String.Compare выполняет сравнения с учетом культурных особенностей и регистра. Этот метод также включает несколько перегрузок, которые предоставляют параметр culture
для указания языка и региональных настроек, и параметр comparisonType
для определения правил сравнения. Вызов этих методов вместо перегрузки по умолчанию устраняет любую неопределенность относительно правил, используемых в конкретном вызове метода, и ясно показывает, учитываются ли культурные особенности или они игнорируются.
Примечание.
Обе перегрузки метода String.CompareTo выполняют сравнения с учетом культурных различий и чувствительности к регистру; этот метод нельзя использовать для сравнения без учета культурных различий. Для ясности кода рекомендуется использовать вместо этого метод String.Compare.
Для операций с учетом культурных особенностей укажите значение перечисления StringComparison.CurrentCulture или StringComparison.CurrentCultureIgnoreCase в качестве параметра comparisonType
. Если вы хотите выполнить сравнение с учетом языка и региональных параметров с использованием указанного языка и региональных параметров, отличных от текущего языка и региональных параметров, укажите объект CultureInfo, представляющий этот язык и региональные параметры в качестве параметра culture
.
Сравнения строк, не зависящие от языка и региональных параметров, поддерживаемые методом String.Compare, являются лингвистическими (на основе соглашений сортировки инвариантной культуры) или нелингвистическими (на основе порядкового значения символов в строке). Большинство сравнений строк, не зависящих от языковых и культурных особенностей, являются нелингвистическими. Для этих сравнений укажите значение перечисления StringComparison.Ordinal или StringComparison.OrdinalIgnoreCase в качестве параметра comparisonType
. Например, если решение безопасности (например, сравнение имени пользователя или пароля) основано на результатах сравнения строк, операция должна быть нечувствительной к культуре и языка, чтобы гарантировать, что результат не зависит от соглашений определенного языка или культуры.
Используйте сравнение лингвистических строк без учета культурных особенностей, если вы хотите согласованно обрабатывать лингвистически значимые строки из нескольких культур. Например, если ваше приложение отображает слова, использующие несколько наборов символов в поле списка, возможно, вам потребуется отображать слова в одинаковом порядке независимо от текущих региональных настроек. Для нечувствительных к культуре лингвистических сравнений .NET определяет инвариантную культуру, основанную на лингвистических соглашениях английского языка. Чтобы выполнить нечувствительное к культуре лингвистическое сравнение, укажите StringComparison.InvariantCulture или StringComparison.InvariantCultureIgnoreCase в качестве параметра comparisonType
.
В следующем примере выполняются два независимых от культуры и языка сравнения строк. Первый учитывает регистр, но второй — нет.
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($"{StringComparison.Ordinal} comparison of '{string1}' and '{string2}': {compareResult}");
compareResult = String.Compare(string1, string2,
StringComparison.OrdinalIgnoreCase);
Console.WriteLine($"{StringComparison.OrdinalIgnoreCase} comparison of '{string1}' and '{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
Вы можете скачать весовые таблицы сортировки, которые представляют собой набор текстовых файлов с информацией о весах символов, используемых в операциях сортировки и сравнения в операционных системах Windows, а также таблицу сортировочных элементов Unicode по умолчанию, которая используется для сортировки в Linux и macOS.