Поиск подстроки в строке — это задача с которой программистам приходится часто сталкиваться. В статье показывается способ решения данной задачи. Материал урока будет полезен начинающим. Рассмотрим поиск подстроки в строке на Java и C#.
Поиск подстроки в строке — это отыскивание наличия одной строки в другой. Результат данной операции — это индекс начала вхождения подстроки в строку.
В языках Java и C# поиск подстроки в строке осуществляется с помощью похожих методов.
Поиск подстроки в строке — реализация
Объяснять материал мы будем на примере языка программирования Java, а в конце статьи приведем реализацию учебного примера на языке C#.
Объявим строку (proverb) и две подстроки (substring1, substring2):
1 2 3 4 5 |
String proverb = "Без труда не вытащишь рыбку из пруда"; String substring1 = "да"; String substring2 = "нет"; |
Для того, чтобы выполнить поиск подстроки в строке в Java используется метод indexOf. Он возвращает индекс ПЕРВОГО вхождения подстроки в сроку. Если подстрока в строке не обнаружена, то будет возвращено число -1.
1 2 3 |
proverb.indexOf(substring1); //будет возвращено 7 proverb.indexOf(substring2); //будет возвращено -1 |
Кроме того, можно указать номер начального символа, с которого будет выполняться поиск (нумерация начинается с нуля), в примере — это десять:
1 |
proverb.indexOf(substring1, 10); //будет возвращено 34 |
Также есть метод, осуществляющий поиск ПОСЛЕДНЕГО вхождения подстроки в строку. Он называется lastIndexOf. Номер начального символа поиска также можно указать.
1 |
proverb.lastIndexOf(substring1); //будет возвращено 34 |
Приводим полный листинг написанного кода на Java, а также демонстрацию работы консольной программы. Ниже, Вы можете скачать исходник, написанный в среде разработки NetBeans IDE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package findsubstring; public class FindSubstring { public static void main(String[] args) { String proverb = "Без труда не вытащишь рыбку из пруда"; String substring1 = "да"; String substring2 = "нет"; System.out.println(proverb.indexOf(substring1)); System.out.println(proverb.indexOf(substring2)); System.out.println(proverb.indexOf(substring1, 10)); System.out.println(proverb.lastIndexOf(substring1)); } } |
Теперь поиск подстроки в строке на языке C#. Код очень похож на то, что было выше, ибо методы называются одинаково и имеют идентичную сигнатуру.
Решим аналогичную задачу. Приводим листинг написанной программы на C#. Исходник можно скачать ниже (написан в Visual Studio).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FindSubstring { class Program { static void Main(string[] args) { string proverb = "Без труда не вытащишь рыбку из пруда"; string substring1 = "да"; string substring2 = "нет"; Console.WriteLine(proverb.IndexOf(substring1)); Console.WriteLine(proverb.IndexOf(substring2)); Console.WriteLine(proverb.IndexOf(substring1, 10)); Console.WriteLine(proverb.LastIndexOf(substring1)); } } } |
Чтобы консоль не закрывалась, запустите программу сочетанием клавиш Ctrl + F5.
Скачать исходник (C#)
Поделиться в соц. сетях: