Member 12873209 Ответов: 1

С#. Как написать функцию, которая может искать строку внутри строки и возвращать количество вхождений?


Привет! Мне нужна помощь, чтобы разобраться с этим. Мне нужно найти строку внутри строки и вернуть количество вхождений. Я попробовал код ниже, и он работает, и я также пытался использовать регулярное выражение, и это сработало, но мой учитель сказал притвориться, что я не могу использовать indexOF или регулярное выражение. Итак, какие-нибудь идеи, пожалуйста?

Что я уже пробовал:

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string s1 = "hellohjhghello";
            string s2 = "he";
            var r = Occurrences(s1, s2);
            Console.WriteLine("{0} is repeated {1} times", s2, r);
        }
        static int Occurrences(string s1, string s2)
        {
            int count = 0;
            int pos = 0;
            while((pos = s1.IndexOf(s2,pos)) > -1)
                {
                count++;
                pos += s2.Length;
            }
            return count;
        }
    }
}

1 Ответов

Рейтинг:
1

Shreyans.K-systematix

Вы можете попробовать это:

int count = s1.Split('he').Length - 1;


Или вы также можете использовать LINQ

s1.Count(x => x == 'he');


F-ES Sitecore

Говоря не использовать IndexOf, подразумевается, что вы должны написать свой собственный алгоритм поиска, именно это упражнение предназначено для проверки, поэтому любое использование любой существующей технологии поиска не будет подходящим.