Строка str: C# обладает эффективными средствами обработки строк.
Индекс первого вхождения символа ' о': 3 Индекс последнего вхождения символа 'о': 49 Индекс первого вхождения подстроки "ми": 22 Индекс последнего вхождения подстроки "ми": 33 Индекс первого вхождения символов 1 а', 'б' или 'в': 4
Строка str начинается с подстроки "C# обладает"
Строка str оканчивается подстрокой "строк."
Во многих случаях полезным для поиска в строке оказывается метод Contains(). Его общая форма выглядит следующим образом.
public bool Contains(string value)
Метод Contains () возвращает логическое значение true, если вызывающая строка содержит подстроку, обозначаемую параметром value, в противном случае — логическое значение false. Поиск указываемой подстроки осуществляется порядковым способом. Этот метод особенно полезен, если требуется только выяснить, находится ли конкретная подстрока в другой строке. В приведенном ниже примере программы демонстрируется применение метода Contains ().
// Продемонстрировать применение метода Contains().
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.
Таблица 22.3. Методы поиска в строке, поддерживаемые в классе String
Метод
Назначение
public bool Contains(string value)
public bool EndsWith(string value)
public bool EndsWith(string value, StringComparison comparisonType)
public bool EndsWith(string value, bool ignoreCase, Culturelnfo culture)
Возвращает логическое значение true, если вызывающая строка содержит подстроку value. Если же подстрока value не обнаружена, возвращается логическое значение false
Возвращает логическое значение* true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false. Параметр comparisonType определяет конкретный способ поиска Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value, иначе возвращает
Метод
Назначение
Public int
IndexOf(char value)
логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture Возвращает индекс первого вхождения
Public int
IndexOf(string value)
символа value в вызывающей строке. Если искомый символ не обнаружен, то возвращается значение -1 Возвращает индекс первого вхождения под
Public int
IndexOf(char value, int
строки value в вызывающей строке. Если искомая подстрока не обнаружена, то возвращается значение -1 Возвращает индекс первого вхождения
startlndex)
символа value в вызывающей строке. По
Public int
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex. Метод возвращает значение -1, если искомый символ не обнаружен
Возвращает индекс первого вхождения
int startlndex)
подстроки value в вызывающей строке.
Public int
IndexOf(char value, int
Поиск начинается с элемента, указываемого по индексу startlndex. Метод возвращает значение -1, если искомая подстрока не обнаружена
Возвращает индекс первого вхождения
startlndex,
int count)
символа value в вызывающей строке. По
Public in.t
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен Возвращает индекс первого вхождения под
int startlndex, int count)
строки value в вызывающей строке. По
Public int
IndexOf(string value,
иск начинается с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена Возвращает индекс первого вхождения
StringComparison comparisonType)
подстроки value в вызывающей строке.
Продолжение табл. 22.3
Метод
Назначение
Параметр comparisonType определяет
конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int IndexOf(string value,
Возвращает индекс первого вхождения
int startlndex, StringComparison
подстроки value в вызывающей строке.
comparison Type)
Поиск начинается с элемента, указываемого по индексу startlndex. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int IndexOf(string value,
Возвращает индекс первого вхождения
int startlndex, int count,
подстроки value в вызывающей строке.
StringComparison comparisonType)
Поиск начинается с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int LastlndexOf(char value)
Возвращает индекс последнего вхождения символа value в вызывающей строке. Если искомый символ не обнаружен, возвращается значение -1
public int IndexOfAny(char[] anyOf)
Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом
public int IndexOfAny(char[] anyOf,
Возвращает индекс первого вхождения лю
int startlndex)
бого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startlndex Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом
public int IndexOfAny(char [] anyOf,
Возвращает индекс первого вхождения
int startlndex, int count)
любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по^ индексу startlndex, и охватывает число
Метод
Назначение
элементов, определяемых параметром count. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом
public int LastlndexOf(string value)
Возвращает индекс последнего вхождения подстроки value в вызывающей строке. Если искомая подстрока не обнаружена, возвращается значение -1
public int LastlndexOf(char value,
Возвращает индекс последнего вхождения
int startlndex)
символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомый символ не обнаружен
public int LastlndexOf(string value,
Возвращает индекс последнего вхождения
int startlndex)
подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int LastlndexOf(char value,
Возвращает индекс последнего вхождения
int startlndex, int count)
символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен
public int LastlndexOf(string value,
Возвращает индекс последнего вхождения
int startlndex, int count)
подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int LastlndexOf(string value,
Возвращает индекс последнего вхождения
StringComparison comparisonType)
подстроки value в вызывающей строке. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
_ Продолжение табл. 22.3
Метод
Назначение
public int LastlndexOf(string value,
Возвращает индекс последнего вхождения
int startlndex, StringComparison
подстроки value в части вызывающей
comparisonType)
строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и заканчивая элементом с нулевым индексом. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int LastlndexOf(string value,
Возвращает индекс последнего вхождения
int startlndex, int count,
подстроки value в части вызывающей
StringComparison comparisonType)
строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена
public int LastlndexOfAny(char[]
Возвращает индекс последнего вхождения
anyOf)
любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом
public int LastlndexOfAny(char[]
• Возвращает индекс последнего вхождения
anyOf, int startlndex)
любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается в обратном порядке с элемента, указываемого по индексу startlndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом
public int LastlndexOfAny(char[]
Возвращает индекс последнего вхождения
anyOf, int startlndex, int count)
любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startlndex, и охватывает число элементов, определяемых параметром count, число элементов, определяемых параметром count. Метод возвращает значение -1,
Метод
Назначение
public bool StartsWith(string value)
public bool StartsWith(string value, StringComparison comparisonType)
public bool StartsWith(string value, bool ignoreCase, Culturelnfo culture)
если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false. Параметр comparisonType определяет конкретный способ выполнения поиска Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture
Разделение и соединение строк
К основным операциям обработки строк относятся разделение и соединение. При разделении строка разбивается на составные части, а при соединении строка составляется из отдельных частей. Для разделения строк в классе String определен метод Split (), а для соединения — метод Join ().
Существует несколько вариантов метода Split (). Ниже приведены две формы этого метода, ставшие наиболее часто используемыми, начиная с версии C# 1.0.
public string[ ] Split(params char[ ] separator)
public string[ ] Split(params char[ ] separator, int count)