Страница 378 из 502
<b>public int LastlndexOf(string value, StringComparison comparisonType)</b>
В первой форме рассматриваемого здесь метода поиск последнего вхождения строки, обозначаемой параметром value, осуществляется с учетом культурной среды. А во второй форме предоставляется возможность указать значение типа StringComparison, обозначающее способ поиска. Если же искомая строка не найдена, то в обеих формах данного метода возвращается значение -1.
В классе String предоставляются еще два интересных метода поиска в строке: IndexOfAny() и LastlndexOfAny(). Оба метода обнаруживают первый символ, совпадающий с любым набором символов. Ниже приведены простейшие формы этих методов.
<b>public int IndexOfAny(char[] anyOf) public int LastlndexOfAny(char[] anyOf)</b>
Метод IndexOfAny() возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке, а метод LastlndexOfAny() — индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Если совпадение символов не обнаружено, то в обоих случаях возвращается значение -1. Кроме того, в обоих рассматриваемых здесь методах осуществляется порядковый поиск.
При обработке символьных строк нередко оказывается полезно знать, начинается ли строка заданной подстрокой или же оканчивается ею. Для этой цели служат методы StartsWith() и EndsWith(). Ниже приведены их простейшие формы.
<b>public bool StartsWith(string value)</b>
<b>public bool EndsWith(string value)</b>
Метод StartsWith() возвращает логическое значение true, если вызывающая строка начинается с подстроки, переданной ему в качестве аргумента value. А метод EndsWith() возвращает логическое значение true, если вызывающая строка оканчивается подстрокой, переданной ему в качестве аргумента value. В противном случае оба метода возвращают логическое значение false.
В обоих рассматриваемых здесь методах поиск осуществляется с учетом культурной среды. Для того чтобы указать конкретный способ поиска подстроки, можно воспользоваться приведенными ниже вариантами этих методов с дополнительным параметром типа StringComparison.
<b>public bool StartsWith(string value, StringComparison comparisonType)</b>
<b>public bool EndsWith(string value, StringComparison comparisonType)</b>
Оба варианта рассматриваемых здесь методов поиска действуют таким же образом, как и предыдущие их варианты. Но в то же время они позволяют явно указать конкретный способ поиска.
В приведенном ниже примере программы демонстрируется применение нескольких методов поиска в строке.
<b>// Продемонстрировать поиск в строке.</b>
<b>using System;</b>
<b>class StringSearchDemo {</b>
<b> static void Main() {</b>
<b> string str = "C# обладает эффективными средствами обработки строк.";</b>
<b> int idx;</b>
<b> Console.WriteLine("Строка str: " + str);</b>
<b> idx = str.IndexOf('о');</b>
<b> Console.WriteLine("Индекс первого вхождения символа 'o': " + idx);</b>
<b> idx = str.LastIndexOf('о');</b>
<b> Console.WriteLine("Индекс последнего вхождения символа 'o': " + idx);</b>
<b> idx = str.IndexOf("ми", StringComparison.Ordinal);</b>
<b> Console.WriteLine("Индекс первого вхождения подстроки "ми": " + idx);</b>
<b> idx = str.LastIndexOf("ми", StringComparison.Ordinal);</b>
<b> Console.WriteLine("Индекс последнего вхождения подстроки "ми": " + idx);</b>
<b> char[] chrs = { 'a', '6', 'в' };</b>
<b> idx = str.IndexOfAny(chrs);</b>
<b> Console.WriteLine("Индекс первого вхождения символов " +</b>
<b> "'а','б' или 'в': " + idx);</b>
<b> if (str.StartsWith("C# обладает", StringComparison.Ordinal))</b>
<b> Console.WriteLine("Строка str начинается с подстроки "C# обладает"");</b>
<b> if (str.EndsWith("строк.", StringComparison.Ordinal))</b>
<b> Console.WriteLine("Строка str оканчивается подстрокой "строк."");</b>
<b> }</b>
<b>}</b>
Ниже приведен результат выполнения этой программы.
<b>Строка str: C# обладает эффективными средствами обработки строк.</b>
<b>Индекс первого вхождения символа 'о' : 3</b>
<b>Индекс последнего вхождения символа 'о': 49</b>
<b>Индекс первого вхождения подстроки "ми": 22</b>
<b>Индекс последнего вхождения подстроки "ми": 33</b>
<b>Индекс первого вхождения символов 'а', 'б' или 'в': 4</b>
<b>Строка str начинается с подстроки "C# обладает"</b>
<b>Строка str оканчивается подстрокой "строк."</b>