Индекс подстроки выходит за рамки, даже если index < string.Длина

#indexing #substring #bounds

#индексирование #подстрока #границы

Вопрос:

Я пытаюсь получить подстроку из большой строки данных, которая у меня есть, но когда я использую эту строку:

 string output = datastring.substring(0, datastring.Length-1)
  

это говорит мне, что индекс выходит за рамки («Индекс и длина должны ссылаться на местоположение в строке»).

Это сработало просто отлично, так что outputstring выводится как то же самое, что и datastring

 while (index < datastring.Length)
        {
            outputstring  = datastring[index];
            index  ;
        }
  

Однако это выдает ошибку:

 if (index   10 < datastring.Length)
{
      if (datastring.substring(index, index 10) == "name")
      {
            outputstring  = " found instance of 'name'";

      }      

}
  

Это говорит о том, что индекс выходит за рамки. Как индекс может выходить за пределы во втором операторе ‘if’, когда я уже проверил, что индекс 10 находится в пределах диапазона?

Ответ №1:

Это .substring(offset, length) , не .substring(startOffset, endOffset) .

Вместо

 datastring.substring(index, index 10)
  

использовать

 datastring.substring(index, 10)