Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

8.8. Сравнение строк

Для объектов класса

string определены только две операции сравнения

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

== и !=. Если необходимо сравнивать строки по их

упорядоченности, например, в лексикографическом порядке, то этих двух операций

недостаточно. Кроме уже упомянутого нестатического метода CompareTo() в классе

string есть статический метод (точнее набор перегруженных методов) с именем

Compare, позволяющий сравнивать строки или их фрагменты. Так как сравнение и

сортировка строк очень важны в задачах обработки текстовой информации, т

о

рассмотрим два варианта метода Compare() "метод: Compare()" .

Наиболее простой метод имеет следующий заголовок:

Int static Compare (string, string)

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

возвращает значение 0, если строки равны. Если первая строка лексикографически

меньше второй – возвращается отрицательное значение. В противном случае

возвращаемое значение положительно.

В следующем фрагменте программы определён массив ссылок на строки, из

него выбирается и присваивается переменной res ссылка на лексикографически

наибольшую строку (08_03.cs):

string[] eng = {"one", "two", "three", "four"};

string res = eng[0];

foreach (string num in eng)

if (string.Compare(res, num) < 0)

res = num;

Значением строки, связанной со ссылкой-переменной res, будет "two".

Проиллюстрированная

форма

метода

C o m p a r e ( )

оценивает

лексикографическую упорядоченность, соответствующую английскому алфавиту.

Следующий вариант этого метода позволяет использовать разные алфавиты.

Int static Compare (string, string, Boolean,CultureInfo)

Первые два параметра – сравниваемые строки. Третий параметр указывает на

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

не учитываются и строки "New" и "nEw" будут считаться равными. Четвёртый

параметр – объект класса System.Globalization.CultureInfo – позволяет указать

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

строк. Для построения объекта, который может быть использован в качестве

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

CultureInfo(string). Аргумент конструктора – строка, содержащая условное

обозначение нужного алфавита. Точнее сказать, обозначается не алфавит,

а

культура (Culture), которой принадлежит соответствующий язык. Для обозначения

национальных культур, приняты имена и коды, таблицу которых можно найти в

литературе и документации, (см. например, [13], Приложение 2). Мы в наших

примерах будем использовать два алфавита: английский (имя культуры "en", код

культуры 0х0009) и русский ("ru" и 0х0019).

В следующем фрагменте программы(08_03.cs), который построен по той же

схеме, что и предыдущий, определён массив ссылок на строки с русскими

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

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

после упорядочения по алфавиту в начале списка.

string[ ] hens = {"Куропатка белая", "Куропатка тундровая",

"Тетерев", "Глухарь", "Рябчик" };

string res = hens[0];

foreach (string hen in hens)

Соседние файлы в папке CSBasicCourse2ndedPodbelsky