Выбрать главу

Несмотря на большую универсальность метода 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)

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

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

Console.WriteLine();

// Определить равенство строк с помощью оператора = = .

// Это порядковое сравнение символьных строк, if(strl == str4) Console.WriteLine(strl + " == " + str4);

// Определить неравенство строк с помощью оператора !=. if(strl != str3) Console.WriteLine(strl + " != " + str3); if(strl != str2) Console.WriteLine(strl + " != " + str2);

Console.WriteLine();

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

// используя метод Equals().

if(String.Equals(strl, str2, StringComparison.OrdinallgnoreCase)) Console.WriteLine("Сравнение строк методом Equals() с " + "параметром OrdinallgnoreCase:\n" + strl + " равно " + str2);

Console.WriteLine ();

// Сравнить части строк, if (String.Compare(str2, 0, str5, 0, 3,

StringComparison.CurrentCulture) >0) {

Console.WriteLine("Сравнение строк с учетом текущей культурной среды:" + "\пЗ первых символа строки " + str2 +

" больше, чем 3 первых символа строки " + str5);

}

}

}

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

Сравнение строк с учетом культурной среды: alpha меньше Alpha Порядковое сравнение строк: alpha больше Alpha Сравнение строк методом CompareOrdinal(): alpha больше Alpha

alpha == alpha alpha != Beta alpha != Alpha

Сравнение строк методом Equals() с параметром OrdinallgnoreCase: alpha равно Alpha

Сравнение строк с учетом текущей культурной среды:

3 первых символа строки Alpha больше, чем 3 первых символа строки alpha, beta

Сцепление строк    ,

Строки можно сцеплять, т.е. объединять вместе, двумя способами. Во-первых, с помощью оператора +, как было показано в главе 7. И во-вторых, с помощью одного из методов сцепления, определенных в классе String. Конечно, для этой цели проще всего воспользоваться оператором +, тем не менее методы сцепления служат неплохой альтернативой такому подходу.

Метод, выполняющий сцепление строк, называется Concat (). Ниже приведена одна из самых распространенных его форм.

public static string Concat(string strO, string strl)

Этот метод возвращает строку, состоящую из строки strl, присоединяемой путем сцепления в конце строки strO. Ниже приведена еще одна форма метода Concat (), в которой сцепляются три строки.