Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод String.Compare (String, Int32, String, Int32, Int32, StringComparison)

 

Опубликовано: Октябрь 2016

Сравнивает подстроки двух указанных объектов String с использованием заданных правил и возвращает целое число, которое показывает их относительное положение в порядке сортировки.

Пространство имен:   System
Сборка:  mscorlib (в mscorlib.dll)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	StringComparison comparisonType
)

Параметры

strA
Type: System.String

Первая из сравниваемых строк.

indexA
Type: System.Int32

Позиция подстроки в strA.

strB
Type: System.String

Вторая из сравниваемых строк.

indexB
Type: System.Int32

Позиция подстроки в strB.

length
Type: System.Int32

Максимальное число сравниваемых знаков в подстроках.

comparisonType
Type: System.StringComparison

Одно из значений перечисления, определяющее используемые при сравнении правила.

Возвращаемое значение

Type: System.Int32

32-битовое целое число со знаком, выражающее лексическое отношение двух сравниваемых значений.

Значение

Условие

Меньше нуля

Подстрока в strA предшествует подстроке в strB в порядке сортировки.

Нуль

Подстроки происходят в той же позиции в порядке сортировки, или length параметра равно нулю.

Больше нуля

Подстрока в strA follllows подстроки в strB в порядке сортировки.

Exception Condition
ArgumentOutOfRangeException

Значение indexA больше значения strALength.

-или-

Значение indexB больше значения strBLength.

-или-

indexA, indexB или length является отрицательным значением.

-или-

indexA или indexB равен null, а length больше нуля.

ArgumentException

comparisonType не является значением StringComparison.

Старта подстроках strA в indexA и strB в indexB. Оба indexA и indexB являются отсчитываемый от нуля, то есть первый символ в strA и strB — на положение ноль, не размещать одну. Длина первой подстроки равна длине strA минус indexA плюс один. Длина второй подстроки равна длине strB минус indexB плюс один.

Число сравниваемых знаков равно меньшему из длин подстрок и length. indexA, indexB, И length параметры должны быть неотрицательными.

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

Один или оба сравниваемых значения могут быть null. По определению, любая строка, включая пустую строку ("»), сравниваются больше, чем указатель null; и две пустые ссылки равны друг другу.

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

Если правила определения регистра для конкретного языка и региональных параметров влияют на результаты сравнений, возможны непредвиденные результаты. Например, в турецком алфавите следующий пример вызывает неверных результатов так файловой системы в турецком не регистр по правилам языка правил для букву «i» в «файл».

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}

Сравните имя пути для «файл», используя порядковое сравнение. Правильный код для этого выглядит следующим образом:

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}

Заметки к вызывающим объектам:

Наборы символов включают игнорируемые символы. Compare(String, Int32, String, Int32, Int32, StringComparison) Метод не учитывает эти символы при выполнении лингвистического сравнения или язык и региональные параметры сравнения. Для распознавания игнорируемые символы, в отличие от вашей, укажите в качестве параметра StringComparison.Ordinal или StringComparison.OrdinalIgnoreCase для comparisonType параметра.

В следующем примере сравниваются две подстроки.

// Sample for String.Compare(String, Int32, String, Int32, Int32)
using System;

class Sample {
    public static void Main() {
//                 0123456
    String str1 = "machine";
    String str2 = "device";
    String str;
    int result;

    Console.WriteLine();
    Console.WriteLine("str1 = '{0}', str2 = '{1}'", str1, str2);
    result = String.Compare(str1, 2, str2, 0, 2);
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(0, 2), str2);
    }
}
/*
This example produces the following results:

str1 = 'machine', str2 = 'device'
Substring 'ch' in 'machine' is less than substring 'de' in 'device'.
*/

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 2.0
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: