KnigaRead.com/
KnigaRead.com » Разная литература » Прочее » Герберт Шилдт - C# 4.0 полное руководство - 2011

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Герберт Шилдт - C# 4.0 полное руководство - 2011". Жанр: Прочее издательство неизвестно, год неизвестен.
Перейти на страницу:

// используя метод 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 (), в которой сцепляются три строки.

public static string Concat(string strO, string strl,string str2)

В данной форме метод Concat () возвращает строку, состоящую из последовательно сцепленных строк strOf strl и str2.

Имеется также форма метода Concat (), в которой сцепляются четыре строки.

public static string Concat(string strO, string strl, string str2, string str3)

В этой форме метод Concat () возвращает строку, состоящую из четырех последовательно сцепленных строк.

А в приведенной ниже еще одной форме метода Со neat () сцепляется произвольное количество строк:

public static string Concat(params string[] values)

где values обозначает переменное количество аргументов, сцепляемых для получения возвращаемого результата. Если в этой форме метода Concat () допускается сцепление произвольного количества строк, то зачем нужны все остальные его формы? Они существуют ради повышения эффективности. Ведь передача методу от одного до четырех аргументов оказывается намного эффективнее, чем использование для этой цели переменного списка аргументов.

В приведенном ниже примере программы демонстрируется применение метода Concat () в форме с переменным списком аргументов.

// Продемонстрировать применение метода Concat().

using System;

class ConcatDemo { static void Main() {

string result = String.Concat("Это ", "тест ", "метода ",

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

"из класса ", "String." );

Console.WriteLine("Результат: " + result);

}

}

Эта программа дает следующий результат.

Результат: Это тест метода сцепления строк из класса String.

Кроме того, существуют варианты метода Concat (), в которых он принимает в качестве параметров ссылки на объекты, а не на строки. В этих вариантах метод Concat () получает строковые представления вызывающих объектов, а возвращает объединенную строку, сцепленную из этих представлений. (Строковые представления объектов получаются с помощью метода ToStringO, вызываемого для этих объектов.) Ниже приведены все подобные варианты и формы метода Concat ().

public static    string    Concat(object    argO)

public static    string    Concat(object    argO,    object    argl)

public static    string    Concat(object    argO,    object    argl,    object    arg2)

public static    string    Concat(object    argO,    object    argl,    object    arg2, object arg3)

public static    string    Concat(params    object[] args)

В первой форме метод Concat () возвращает строку, эквивалентную объекту argO, а в остальных формах — строку, получаемую в результате сцепления всех аргументов данного метода. Объектные формы метода Concat (), т.е. относящиеся к типу obj ect, очень удобны, поскольку они исключают получение вручную строковых представлений объектов перед их сцеплением. В приведенном ниже примере программы наглядно демонстрируется польза от подобных форм метода Concat ().

.// Продемонстрировать применение объектной формы метода Concat()." using System;

public static int Count = 0; public MyClassO { Count++; }

}

class ConcatDemo { static void Main() {

string result = String.Concat("значение равно " + 19);

Console.WriteLine("Результат: " + result);

result = String.Concat("привет ", 88, " ", 20.0,

" ", false, " ", 23.45M);

Console.WriteLine("Результат: " + result);

MyClass me = new MyClassO;

result = String.Concat(me, " текущий счет равен ",

MyClass.Count);

Console.WriteLine("Результат: " + result);

}

}

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

Результат: значение равно 19 Результат: привет 88 20 False 23.45 Результат: MyClass текущий счет равен 1

В данном примере метод Concat () сцепляет строковые представления различных типов данных. Для каждого аргумента этого метода вызывается соответствующий метод ToString (), с помощью которого получается строковое представление аргумента. Следовательно, в следующем вызове метода Concat ():

string result = String.Concat("значение равно " + 19);

метод Int32.ToString() вызывается для получения строкового представления целого значения 19, а затем метод Concat () сцепляет строки и возвращает результат.

Обратите также внимание на применение объекта определяемого пользователем класса MyClass в следующем вызове метода Concat ().

result = String.Concat(me, " текущий счет равен ",

MyClass.Count);

В данном случае возвращается строковое представление объекта типа MyClass, сцепленное с указываемой строкой. По умолчанию это просто имя класса. Но если переопределить метод ToString (), то вместо строки с именем класса MyClass может быть возвращена другая строка. В качестве упражнения попробуйте ввести в приведенный выше пример программы следующий фрагмент кода.

public override string ToString()    {

return "Объект типа MyClass";

}

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

Результат: Объект типа MyClass текущий счет равен 1

В версию 4.0 среды .NET Framework добавлены еще две формы метода Concat (), приведенные ниже.

public static string Concat<T>(IEnumerable<T> values) public static string Concat(IEnumerable<string> values)

В первой форме этого метода возвращается символьная строка, состоящая из сцепленных строковых представлений ряда значений, имеющихся в объекте, который обозначается параметром values и может быть объектом любого типа, реализующего интерфейс IEnumerable<T>. А во второй форме данного метода сцепляются строки, обозначаемые параметром values. (Следует, однако, иметь в виду, что если приходится выполнять большой объем операций сцепления символьных строк, то для этой цели лучше воспользоваться средствами класса StringBuilder.)

Поиск в строке

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*