Урок 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 false
Contains метод из .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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, Уроки по си шарп, string, си шарп,, поиск позиции в строке




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Дженерики (Generics) в Java
Приведение типов аргументов в C#
Поля и методы в Java: служебные классы