0

Есть задача:

Найти определенную строку и вырезать оттуда 4-х значный идентификатор.

Попытка реализации:

string source = reader.ReadToEnd();
int findIndex = source.IndexOf("Логин_Пользователь"); // индекс = 408694
int y = source.Length; // посмотрел общую размерность source = 443406

var h = source[findIndex]; // тут я проверял что возможно получить значение строки по индексу (Получили 'Л') var z = source[findIndex-62] // тут тоже есть значение '<'

source = source.Substring(findIndex - 62, findIndex); // вырезаем из общего html строку в которой будем искать идентификатор // и именно тут выходит ошибка // > System.ArgumentOutOfRangeException: "Индекс и длина должны указывать на позицию в строке.

source = source.Substring(source.IndexOf("param1=")+7, 4); // исходя из полученой ранее строки, вырезаем 4 знака после param1=

Console.WriteLine(source); // должны получить идентификатор состоящий из 4 знаков

К сожалению, не могу понять почему в моей реализации возникает такая ошибка, ведь индекс и длина действительно указывают на позицию в строке (это было проверено в переменных var h и var z)

При этом, если в Substring использовать индексы меньшей длины например так:

source = source.Substring(11186 - 62, 11186)

Ошибки не произойдёт и значение будет получено.

Прошу подскажите чего я не замечаю/не понимаю.

Ранее меня отсылали на статью Как распарсить HTML в .NET? и закрыли статью. Не совсем понял в чём была причина, поэтому убрал все тэги связанный с парсингом и html, поскольку считаю, что у меня вопрос именно по работе с методом Substring ( о чем я описал в заголовке ), а не конкретно с парсингом.

ovrolg
  • 35
  • @tym32167 Посмотрите пожалуйста исправленный вопрос. – 0xdb Mar 28 '20 at 12:54
  • вопрос решен, проблема была в моей невнимательности source = source.Substring(findIndex - 62, 62); \ после исправления стало работать корректно – ovrolg Mar 28 '20 at 19:32

1 Answers1

0

вопрос решен, проблема была в моей невнимательности
source = source.Substring(findIndex - 62, 62);
после исправления стало работать корректно

ovrolg
  • 35