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