Объясните работу куска кода с IndexOf - C#
Формулировка задачи:
Здравствуйте. Объясните, как работает кусок кода. Заранее спасибо.
Как работает indexof мне понятно, а связанное с cur не очень.
while (cur != -1)
{
cur = stroka.IndexOf(podstroka, cur);
if (cur != -1)
{
cur++;
count++;
}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace asd
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку");
string stroka = Console.ReadLine();
Console.WriteLine();
Console.WriteLine("Введите подстроку");
string podstroka = Console.ReadLine();
Console.WriteLine();
if (stroka.Length < podstroka.Length)
Console.WriteLine("строка не может быть меньше подстроки");
else
{
if (stroka.Contains(podstroka)) //строка содержит подстроку
Console.WriteLine("Строка {0} содержит подстроку {1}", stroka, podstroka);
else
Console.WriteLine("Строка {0} не содержит подстроку {1}", stroka, podstroka);
}
int count = 0;//количество вхождений подстроки в строку
int cur = 0;// текущее положение
while (cur != -1)
{
cur = stroka.IndexOf(podstroka, cur);
if (cur != -1)
{
cur++;
count++;
}
}
Console.WriteLine(count);
Console.ReadKey();
}
}
}Решение задачи: «Объясните работу куска кода с IndexOf»
textual
Листинг программы
while (cur != -1) //пока IndexOf не вернет -1
{
cur = stroka.IndexOf(podstroka, cur); //ищем индекс вхождения podstroka в stroka, начиная с символа с индексом cur
if (cur != -1) //если нашли
{
cur++; //поиск продолжим со следующего по индексу символа, чтобы не искать там, где уже искали
count++; //увеличиваем счетчик вхождений
}
}