Проверка на выход за пределы строки в цикле - C#
Формулировка задачи:
Здраствуйте, подскажите как в таком коде сделать проверку на выход за пределы строки?
Этот код не работает. Получаем ошибку 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 при условии что '?' может быть заменен на произвольный символ.
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";
Решение задачи: «Проверка на выход за пределы строки в цикле»
textual
Листинг программы
if (strS[i] == strT[i + j] || strT[i + j] == '?') countTrue++;