Проверка на выход за пределы строки в цикле - C#

Узнай цену своей работы

Формулировка задачи:

Здраствуйте, подскажите как в таком коде сделать проверку на выход за пределы строки?
using System;
 
namespace StrInStr
{
    class MainClass
    {
        public static string checkStr(string strT, string strS) 
        {
            int countTrue = 0;
            for (int i = 0; i < strT.Length; i++) 
            {
                countTrue = 0;
                for (int j = 0; j < strS.Length; j++)
                {
                    if ((i + j) > strT.Length) return "NO";
                        if (strS[i] == strT[i + j] || strT[i + j] == '?') countTrue++;
                    if (countTrue == strS.Length) return "YES";

                }

            }
            return "NO";
        }

        public static void Main(string[] args)
        {
            string strT = Console.ReadLine();
            string strS = Console.ReadLine();
            Console.WriteLine(checkStr(strT, strS));
            Console.ReadKey();

        }
    }
}
if ((i + j) > strT.Length) return "NO";
Этот код не работает. Получаем ошибку System.IndexOutOfRangeException: Индекс находился вне границ массива. at в System.String.get_Chars(Int32 index) at в StrInStr.MainClass.checkStr(String strT, String strS) в C:\Users\Евгений\Documents\Projects\StrInStr\StrInStr\Program.cs:строка 16 at в StrInStr.MainClass.Main(String[] args) в C:\Users\Евгений\Documents\Projects\StrInStr\StrInStr\Program.cs:строка 39 Данная программа производит поиск вхождения подстроки strS в строку strT при условии что '?' может быть заменен на произвольный символ.

Решение задачи: «Проверка на выход за пределы строки в цикле»

textual
Листинг программы
if (strS[i] == strT[i + j] || strT[i + j] == '?') countTrue++;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы