Чтение онлайн

на главную - закладки

Жанры

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

bool

Возвращает логическое значение true, если строка а содер

Equals(string

a,

жит ту же последовательность символов, что и строка Ь. Вы

string b)

полняется порядковое сравнение с учетом регистра, но без учета культурной среды

public static

bpol

Возвращает

логическое значение true, если строка а со

Equals(string

a,

держит ту же последовательность символов, что и строка Ь.

string b,

Параметр comparisonType определяет конкретный способ

StringComparison

сравнения строк

comparison Type)

Тип StringComparison представляет собой перечисление, в котором определяются значения, приведенные в табл. 22.2. Используя эти значения, можно организовать сравнение строк, удовлетворяющее потребностям конкретного приложения. Следовательно, добавление параметра типа StringComparison расширяет возможности метода Compare и других методов сравнения, например, Equals . Это дает также возможность однозначно указывать способ предполагаемого сравнения строк. В силу имеющих отличий между сравнением строк с учетом культурной среды и порядковым сравнением очень важно быть предельно точным в этом отношении. Именно по этой причине в примерах программ, приведенных в данной книге, параметр типа StringComparison явно указывается в вызовах тех методов, в которых он поддерживается.

Таблица 22.2. Значения, определяемые в перечислении StringComparison

Значение

Описание

CurrentCulture

Сравнение строк производится с использованием текущих настроек параметров культурной среды

CurrentCultureIgnoreCase

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

InvariantCulture

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

Значение

Описание

InvariantCulturelngoreCase

Сравнение строк производится с использованием не

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

Ordinal

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

OrdinalIgnoreCase

Сравнение

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

В любом случае метод Compare возвращает отрицательное значение, если первая сравниваемая строка оказывается меньше второй; положительное значение, если первая сравниваемая строка больше второй; и наконец, нуль, если обе сравниваемые строки равны. Несмотря на то что метод Compare возвращает нуль, если сравниваемые строки равны, для определения равенства символьных строк, как правило, лучше пользоваться методом Equals или же оператором = =. Дело в том, что метод Compare определяет равенство сравниваемых строк на основании порядка их сортировки. Так, если выполняется сравнение строк с учетом культурной среды, то обе строки могут оказаться одинаковыми по порядку их сортировки, но не равными по существу. По умолчанию равенство строк определяется в методе Equals , исходя из порядковых значений символов и без учета культурной среды. Следовательно, по умолчанию обе строки сравниваются в этом методе на абсолютное, посимвольное равенство подобно тому, как это делается в операторе = =.

Несмотря на большую универсальность метода Compare , для простого порядкового сравнения символьных строк проще пользоваться методом CompareOrdinal . И наконец, следует иметь в виду, что метод CompareTo выполняет сравнение строк только с учетом культурной среды. На момент написания этой книги отсутствовали перегружаемые варианты этого метода, позволявшие указывать другой способ сравнения символьных строк.

В приведенной ниже программе демонстрируется применение методов Compare , Equals , CompareOrdinal , а также операторов = = и ! = для сравнения символьных строк. Обратите внимание на то, что два первых примера сравнения наглядно демонстрируют отличия между сравнением строк с учетом культурной среды и порядковым сравнением в англоязычной среде.

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

using System;

class CompareDemo { 1 static void Main { string strl = "alpha"; string str2 = "Alpha";

string str3 = "Beta"; string str4 = "alpha"; string str5 = "alpha, beta"; int result;

// Сначала продемонстрировать отличия между сравнением строк

// с учетом культурной среды и порядковым сравнением.

result = String.Compare(strl, str2, StringComparison.CurrentCulture)

Console.Write("Сравнение строк с учетом культурной среды: ");

if(result < 0)

Console.WriteLine(strl + " меньше " + str2); else if(result > 0)

Console.WriteLine(strl + " больше " + str2); else

Console.WriteLine(strl + " равно " + str2);

result = String.Compare(strl, 'str2, StringComparison.Ordinal); Console.Write("Порядковое сравнение строк: "); if(result < 0)

Console.WriteLine(strl + " меньше " + str2); else if(result > 0)

Console.WriteLine(strl + " больше " + str2); else

Console.WriteLine(strl + " равно " + str4); i

// Использовать метод CompareOrdinal. result = String.CompareOrdinal(strl, str2);

Console.Write("Сравнение строк методом CompareOrdinal:\n") ; if(result < 0)

Console.WriteLine(strl + " меньше " + str2) ; else if(result > 0)

Поделиться:
Популярные книги

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Низший 2

Михайлов Дем Алексеевич
2. Низший!
Фантастика:
боевая фантастика
7.07
рейтинг книги
Низший 2

Попаданка в деле, или Ваш любимый доктор - 2

Марей Соня
2. Попаданка в деле, или Ваш любимый доктор
Любовные романы:
любовно-фантастические романы
7.43
рейтинг книги
Попаданка в деле, или Ваш любимый доктор - 2

Боги, пиво и дурак. Том 3

Горина Юлия Николаевна
3. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 3

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Комендант некромантской общаги 2

Леденцовская Анна
2. Мир
Фантастика:
юмористическая фантастика
7.77
рейтинг книги
Комендант некромантской общаги 2

Экономка тайного советника

Семина Дия
Фантастика:
фэнтези
5.00
рейтинг книги
Экономка тайного советника

Душелов. Том 2

Faded Emory
2. Внутренние демоны
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Душелов. Том 2

Любимая учительница

Зайцева Мария
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Любимая учительница

Довлатов. Сонный лекарь 3

Голд Джон
3. Не вывожу
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Довлатов. Сонный лекарь 3

Санек

Седой Василий
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Санек

Страж Кодекса. Книга VI

Романов Илья Николаевич
6. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга VI

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2