В классе String
предоставляются еще два интересных метода поиска в строке: IndexOfAny()
и LastlndexOfAny()
. Оба метода обнаруживают первый символ, совпадающий с любым набором символов. Ниже приведены простейшие формы этих методов.
public int IndexOfAny(char[] anyOf) public int LastlndexOfAny(char[] anyOf)
Метод IndexOfAny()
возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке, а метод LastlndexOfAny()
— индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Если совпадение символов не обнаружено, то в обоих случаях возвращается значение -1. Кроме того, в обоих рассматриваемых здесь методах осуществляется порядковый поиск.
При обработке символьных строк нередко оказывается полезно знать, начинается ли строка заданной подстрокой или же оканчивается ею. Для этой цели служат методы StartsWith()
и EndsWith()
. Ниже приведены их простейшие формы.
public bool StartsWith(string value)
public bool EndsWith(string value)
Метод StartsWith()
возвращает логическое значение true
, если вызывающая строка начинается с подстроки, переданной ему в качестве аргумента value . А метод EndsWith()
возвращает логическое значение true
, если вызывающая строка оканчивается подстрокой, переданной ему в качестве аргумента value. В противном случае оба метода возвращают логическое значение false
.
В обоих рассматриваемых здесь методах поиск осуществляется с учетом культурной среды. Для того чтобы указать конкретный способ поиска подстроки, можно воспользоваться приведенными ниже вариантами этих методов с дополнительным параметром типа 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.LastIndexOf("ми", StringComparison.Ordinal);
Console.WriteLine("Индекс последнего вхождения подстроки \"ми\": " + idx);
char[] chrs = { 'a', '6', 'в' };
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()
.
Читать дальше