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

using System;

class MyClass {

  public static int Count = 0;

  public MyClass() { 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 MyClass();

    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(IEnumerable values)

public static string Concat(IEnumerable values)

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

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

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

Для обнаружения первого вхождения символа или подстроки в исходной строке служит метод IndexOf(). Для него определено несколько перегружаемых форм. Ниже приведена одна из форм для поиска первого вхождения символа в исходной строке.

public int IndexOf(char value)

В этой форме метода IndexOf() возвращается первое вхождение символа value в вызывающей строке. Если символ value в ней не найден, то возвращается значение -1. При таком поиске символа настройки культурной среды игнорируются. Следовательно, в данном случае осуществляется порядковый поиск первого вхождения символа. .

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

public int IndexOf(String value)

Перейти на страницу:

Похожие книги