Чтение онлайн

на главную - закладки

Жанры

Полное руководство. С# 4.0
Шрифт:

Метод 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.

Таблица 22.3. Методы поиска в строке, поддерживаемые в классе String Метод Назначение public bool Contains(string value) Возвращает логическое значение true, если вызывающая строка содержит подстроку value. Если же подстрока value не обнаружена, возвращается логическое значение false public bool EndsWith(string value) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false public bool EndsWith(string value, StringComparison comparisonType) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value. В противном случае возвращает логическое значение false. Параметр comparisonType определяет конкретный способ поиска public bool EndsWith(string value, bool ignoreCase, CultureInfo culture) Возвращает логическое значение true, если вызывающая строка оканчивается подстрокой value, иначе возвращает логическое значение false. Если параметр ignoreCase принимает логическое значение true, то при сравнении не учитываются различия между прописным и строчным вариантами букв. В противном случае эти различия учитываются. Поиск осуществляется с использованием информации о культурной среде, обозначаемой параметром culture public int IndexOf(char value) Возвращает индекс первого вхождения символа value в вызывающей строке. Если искомый символ не обнаружен, то возвращается значение -1 public int IndexOf(string value) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Если искомая подстрока не обнаружена, то возвращается значение -1 public int IndexOf(char value, int startIndex) Возвращает индекс первого вхождения символа value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Метод возвращает значение -1, если искомый символ не обнаружен public int IndexOf(string value, int startIndex) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(char value, int startIndex, int count) Возвращает индекс первого вхождения символа value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен public int IndexOf(string value, int startIndex, int count) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, int startIndex, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int IndexOf(string value, int startIndex, int count, StringComparison comparisonType) Возвращает индекс первого вхождения подстроки value в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastlndexOf(char value) Возвращает индекс последнего вхождения символа value в вызывающей строке. Если искомый символ не обнаружен, возвращается значение -1 public int IndexOfAny(char[] anyOf) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int IndexOfAny(char[] anyOf, int startIndex) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int IndexOfAny(char[] anyOf, int startIndex, int count) Возвращает индекс первого вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOf(string value) Возвращает индекс последнего вхождения подстроки value в вызывающей строке. Если искомая подстрока не обнаружена, возвращается значение -1 public int LastIndexOf(char value, int startIndex) Возвращает индекс последнего вхождения символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомый символ не обнаружен public int LastIndexOf(string value, int startIndex) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(char value, int startIndex, int count) Возвращает индекс последнего вхождения символа value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомый символ не обнаружен public int LastIndexOf(string value, int startIndex, int count) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в вызывающей строке. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, int startIndex, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется

в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOf(string value, int startIndex, int count, StringComparison comparisonType) Возвращает индекс последнего вхождения подстроки value в части вызывающей строки. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count. Параметр comparisonType определяет конкретный способ выполнения поиска. Метод возвращает значение -1, если искомая подстрока не обнаружена public int LastIndexOfAny(char[] anyOf) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOfAny(char[] anyOf, int startIndex) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск начинается в обратном порядке с элемента, указываемого по индексу startIndex, и заканчивая элементом с нулевым индексом. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public int LastIndexOfAny(char[] anyOf, int startIndex, int count) Возвращает индекс последнего вхождения любого символа из массива anyOf, обнаруженного в вызывающей строке. Поиск осуществляется в обратном порядке, начиная с элемента, указываемого по индексу startIndex, и охватывает число элементов, определяемых параметром count, число элементов, определяемых параметром count. Метод возвращает значение -1, если не обнаружено совпадение ни с одним из символов из массива anyOf. Поиск осуществляется порядковым способом public bool StartsWith(string value) Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false public bool StartsWith(string value, StringComparison comparisonType) Возвращает логическое значение true, если вызывающая строка начинается с подстроки value. В противном случае возвращается логическое значение false. Параметр comparisonType определяет конкретный способ выполнения поиска public bool StartsWith(string value, bool ignoreCase, CultureInfo culture) Возвращает логическое значение 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)

В первой форме метода Split вызывающая строка разделяется на составные части. В итоге возвращается массив, содержащий подстроки, полученные из вызы вающей строки. Символы, ограничивающие эти подстроки, передаются в массиве separator. Если массив separator пуст или ссылается на пустую строку, то в каче стве разделителя подстрок используется пробел. А во второй форме данного метода возвращается количество подстрок, определяемых параметром count.

Существует несколько форм метода Join. Ниже приведены две формы, ставшие доступными, начиная с версии 2.0 среды .NET Framework. public static string Join(string separator, string[] value) public static string Join(string separator, string[] value, int startIndex, int count)

В первой форме метода Join возвращается строка, состоящая из сцепляемых подстрок, передаваемых в массиве value. Во второй форме также возвращается стро ка, состоящая из подстрок, передаваемых в массиве value, но они сцепляются в опре деленном количестве count, начиная с элемента массива value[startIndex]. В обе их формах каждая последующая строка отделяется от предыдущей разделительной строкой, определяемой параметром separator.

В приведенном ниже примере программы демонстрируется применение методов Split и Join. // Разделить и соединить строки. using System; class SplitAndJoinDemo { static void Main { string str = "Один на суше, другой на море."; char[] seps = {' ', '.', ',' }; // Разделить строку на части. string[] parts = str.Split(seps); Console.WriteLine("Результат разделения строки: "); for(int i=0; i < parts.Length; i++) Console.WriteLine(parts[i]); // А теперь соединить части строки. string whole = String.Join(" | ", parts); Console.WriteLine("Результат соединения строки: "); Console.WriteLine(whole); } }

Ниже приведен результат выполнения этой программы. Результат разделения строки: Один на суше другой на море Результат соединения строки: Один | на | суше | | другой | на | море

Обратите внимание на пустую строку между словами "суше" и "другой". Дело в том, что в исходной строке после слова "суше" следует запятая и пробел, как в под строке "суше, другой". Но запятая и пробел указаны в качестве разделителей. Поэтому при разделении данной строки между двумя разделителями (запятой и пробелом) оказывается пустая строка.

Существует ряд других форм метода Split, принимающих параметр типа StringSplitOptions. Этот параметр определяет, являются ли пустые строки частью разделяемой в итоге строки. Ниже приведены все эти формы метода Split. public string[] Split(params char[] separator,StringSplitOptions options) public string[] Split(string[] separator, StringSplitOptions options) public string[] Split(params char[] separator, int count, StringSplitOptions options) public string[] Split(string[] separator, int count, StringSplitOptions options)

В двух первых формах метода Split вызывающая строка разделяется на части и возвращается массив, содержащий подстроки, полученные из вызывающей стро ки. Символы, разделяющие эти подстроки, передаются в массиве separator. Если массив separator пуст, то в качестве разделителя используется пробел. А в третьей и четвертой формах данного метода возвращается количество строк, ограничиваемое параметром count. Но во всех формах параметр options обозначает конкретный спо соб обработки пустых строк, которые образуются в том случае, если два разделителя оказываются рядом. В перечислении StringSplitOptions определяются только два значения: None и RemoveEmptyEntries. Если параметр options принимает значение None, то пустые строки включаются в конечный результат разделения исходной стро ки, как показано в предыдущем примере программы. А если параметр options при нимает значение RemoveEmptyEntries, то пустые строки исключаются из конечного результата разделения исходной строки.

Для того чтобы стали понятнее последствия исключения пустых строк, попробуем заменить в предыдущем примере программы строку кода string[] parts = str.Split(seps);

следующим фрагментом кода. string[] parts = str.Split(seps, StringSplitOptions.RemoveEmptyEntries);

При выполнении данной программы получится следующий результат. Результат разделения строки: Один на суше другой на море Результат соединения строки: Один | на | суше | другой | на | море

Как видите, пустая строка, появлявшаяся ранее из-за того, что после слова "суше" следовали запятая и пробел, теперь исключена.

Поделиться:
Популярные книги

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Темный Лекарь 11

Токсик Саша
11. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 11

Найденыш

Шмаков Алексей Семенович
2. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Найденыш

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Маршал Сталина. Красный блицкриг «попаданца»

Ланцов Михаил Алексеевич
2. Маршал Советского Союза
Фантастика:
альтернативная история
8.46
рейтинг книги
Маршал Сталина. Красный блицкриг «попаданца»

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Право на месть

Ледова Анна
3. Академия Ровельхейм
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Право на месть

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

Младший сын князя. Том 3

Ткачев Андрей Юрьевич
3. Аналитик
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Младший сын князя. Том 3

Нищенка в Королевской Академии магии. Зимняя практика 2

Майер Кристина
2. Нищенка а Академии
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Нищенка в Королевской Академии магии. Зимняя практика 2

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2