Урок 22. Функции поиска в строках C#
Двадцать вторая часть учебника по основам C# завершает начальное изучение функций манипулирования строками, предоставляемых классом String. В статье рассматриваются методы, доступные для исследования содержимого строк.
Часто необходимо узнать длину строки, например, для проверки ввода пользователя. Класс String предоставляет свойство Length, которое дает нам эту информацию. Свойство возвращает целое число, представляющее количество символов.
string animal = "Dog"; int result; result = animal.Length; // result 3 result = "Elephant".Length; // result 8Примечание: свойство Length выполняется довольно быстро. При проверке строки на пустоту более эффективно проверять нулевую длину, чем сравнивать строковое значение со String.Empty или"".
Поиск позиции текста в строке
На одном из предыдущих уроков мы рассмотрели метод Substring, который позволяет извлекать символы из заданной позиции в строке. Обратное ему - указать ряд символов и определить позицию, в которой подстрока появляется в строке. Это может быть достигнуто с помощью методов IndexOf и LastIndexOf.
IndexOf принимает параметр, содержащий подстроку для поиска. Если она существует в основной строке, возвращается позиция первого вхождения. Эта позиция называется указателем: целое число, указывающее количество символов между началом строки и найденным текстом. Для начала строки этот индекс равен нулю. Если подстрока не находится в основной строке, метод возвращает -1.
LastIndexOf похож на IndexOf. Однако вместо возврата индекса первого вхождения поискового термина LastIndexOf возвращает позицию последнего вхождения.
string phrase = "The quick brown fox jumps over the lazy dog."; int result; result = phrase.IndexOf("brown"); // result 10 result = phrase.LastIndexOf("dog"); // result 40 result = phrase.IndexOf("green"); // result -1 result = phrase.LastIndexOf("blue"); // result -1Указание границ поиска
IndexOf и LastIndexOf могут быть ограничены с указанием начальной позицию для поиска. С IndexOf можно найти только вхождения указанной подстроки справа или справа от этой позиции. При использовании LastIndexOf находятся только соответствующие подстроки слева от этой позиции.
string phrase = "The quick brown fox jumps over the lazy dog."; int result; result = phrase.IndexOf("he"); // result 1 result = phrase.IndexOf("he", 1); // result 1 result = phrase.IndexOf("he", 2); // result 32 result = phrase.LastIndexOf("he"); // result 32 result = phrase.LastIndexOf("he",33); // result 32 result = phrase.LastIndexOf("he",32); // result 1Поиск может быть ограничен третьим параметром. Этот параметр представляет собой целое число, указывающее максимальное количество символов, которые могут быть рассмотрены. Если совпадение не существует в диапазоне символов, то результат будет равен -1.
string phrase = "The quick brown fox jumps over the lazy dog."; int result; result = phrase.IndexOf("brown"); // result 10 result = phrase.IndexOf("brown", 5, 4); // result -1 result = phrase.LastIndexOf("fox"); // result 16 result = phrase.LastIndexOf("he", 25, 5); // result -1Простые проверки на содержание
IndexOf и LastIndexOf полезны при определении точного положения подстрок в строках. Однако, иногда достаточно просто знать, что там имеется такая подстрока. Класс String предоставляет несколько методов для выполнения этих тестов.
StartsWith и EndsWith
StartsWith и EndsWith позволяют определить, начинается или заканчивается строка определенной серией символов. Оба метода принимают аргумент, содержащий строку для поиска соответствия, а возвращают логическое значени. Эти методы учитывают регистр.
string phrase = "The quick brown fox jumps over the lazy dog."; bool result; result = phrase.StartsWith("The quick"); // result true result = phrase.StartsWith("lazy dog."); // result false result = phrase.EndsWith("lazy dog."); // result true result = phrase.EndsWith("The quick"); // result falseContains метод из .NET 2.0
Последняя строковая функция, ркоторую мы рассмотрим на сегодняшнем уроке – это Contains. Введенный в версии 2.0 .NET framework, он работает аналогично StartsWith и EndsWith, но проверяет, существует ли указанный поисковый символ в любой позиции в основной строке.
string phrase = "The quick brown fox jumps over the lazy dog."; bool result; result = phrase.Contains("brown fox"); // result true result = phrase.Contains("lazy fox."); // result false
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.