Страница 377 из 502
<b> Console.WriteLine("Результат: " + result);</b>
<b> MyClass me = new MyClass();</b>
<b> result = String.Concat(me, " текущий счет равен ",</b>
<b> MyClass.Count);</b>
<b> Console.WriteLine("Результат: " + result);</b>
<b> }</b>
<b>}</b>
Вот к какому результату приводит выполнение этой программы.
<b>Результат: значение равно 19</b>
<b>Результат: привет 88 20 False 23.45</b>
<b>Результат: MyClass текущий счет равен 1</b>
В данном примере метод Concat() сцепляет строковые представления различных типов данных. Для каждого аргумента этого метода вызывается соответствующий метод ToString(), с помощью которого получается строковое представление аргумента. Следовательно, в следующем вызове метода Concat():
<b>string result = String.Concat("значение равно " + 19);</b>
метод Int32.ToString() вызывается для получения строкового представления целого значения 19, а затем метод Concat() сцепляет строки и возвращает результат.
Обратите также внимание на применение объекта определяемого пользователем класса MyClass в следующем вызове метода Concat().
<b>result = String.Concat(me, " текущий счет равен ",</b>
<b> MyClass.Count);</b>
В данном случае возвращается строковое представление объекта типа MyClass, сцепленное с указываемой строкой. По умолчанию это просто имя класса. Но если переопределить метод ToString(), то вместо строки с именем класса MyClass может быть возвращена другая строка. В качестве упражнения попробуйте ввести в приведенный выше пример программы следующий фрагмент кода.
<b>public override string ToString() {</b>
<b>return "Объект типа MyClass";</b>
<b>}</b>
В этом случае последняя строка результата выполнения программы будет выглядеть так, как показано ниже.
<b>Результат: Объект типа MyClass текущий счет равен 1</b>
В версию 4.0 среды .NET Framework добавлены еще две формы метода Concat(), приведенные ниже.
<b>public static string Concat<T>(IEnumerable<T> values)</b>
<b>public static string Concat(IEnumerable<string> values)</b>
В первой форме этого метода возвращается символьная строка, состоящая из сцепленных строковых представлений ряда значений, имеющихся в объекте, который обозначается параметром values и может быть объектом любого типа, реализующего интерфейс IEnumerable<T>. А во второй форме данного метода сцепляются строки, обозначаемые параметром values. (Следует, однако, иметь в виду, что если приходится выполнять большой объем операций сцепления символьных строк, то для этой цели лучше воспользоваться средствами класса StringBuilder.)
В классе String предоставляется немало методов для поиска в строке. С их помощью можно, например, искать в строке отдельный символ, строку, первое или последнее вхождение того и другого в строке. Следует, однако, иметь в виду, что поиск может осуществляться либо с учетом культурной среды либо порядковым способом.
Для обнаружения первого вхождения символа или подстроки в исходной строке служит метод IndexOf(). Для него определено несколько перегружаемых форм. Ниже приведена одна из форм для поиска первого вхождения символа в исходной строке.
<b>public int IndexOf(char value)</b>
В этой форме метода IndexOf() возвращается первое вхождение символа value в вызывающей строке. Если символ value в ней не найден, то возвращается значение -1. При таком поиске символа настройки культурной среды игнорируются. Следовательно, в данном случае осуществляется порядковый поиск первого вхождения символа. .
Ниже приведены еще две формы метода IndexOf(), позволяющие искать первое вхождение одной строки в другой.
<b>public int IndexOf(String value)</b>
<b>public int IndexOf(String value, StringComparison comparisonType)</b>
В первой форме рассматриваемого здесь метода поиск первого вхождения строки, обозначаемой параметром value, осуществляется с учетом культурной среды. А во второй форме предоставляется возможность указать значение типа StringComparison, обозначающее способ поиска. В если искомая строка не найдена, то в обеих формах данного метода возвращается значение -1.
Для обнаружения последнего вхождения символа или строки в исходной строке служит метод LastIndexOf(). И для этого метода определено несколько перегружаемых форм. Ниже приведена одна из форм для поиска последнего вхождения символа в вызывающей строке.
<b>public int LastlndexOf(char value) </b>
В этой форме метода LastlndexOf() осуществляется порядковый поиск, а в итоге возвращается последнее вхождение символа value в вызывающей строке или же значение -1, если искомый символ не найден.
Ниже приведены еще две формы метода LastlndexOf(), позволяющие искать последнее вхождение одной строки в другой.
<b>public int LastlndexOf(string value)</b>