System.ArgumentOutOfRangeException: startIndex не может быть больше длины строки - PullRequest
6 голосов
/ 22 марта 2012

У меня есть этот код. Я пытаюсь получить только текст «первая программа». Учитывая, что я знаю, что индекс говорит 25, а общая длина строки равна 35.

string text="Hello world ! This is my first program";

Response.Write(text.SubString(25,35));

Но я получаю ошибку во время выполнения "System.ArgumentOutOfRangeException: startIndex не может быть больше, чем длина строки"

Ответы [ 5 ]

14 голосов
/ 22 марта 2012

Параметры для String.Substring:

public string Substring(
    int startIndex,
    int length
)

Вы пытаетесь взять 35 символов после 26-го символа (startIndex начинается с нуля), который находится за пределами диапазона.

Если вы просто хотите получить от 25-го символа до конца строки, используйте text.SubString(24)

4 голосов
/ 22 марта 2012

Второй аргумент string.Substring() - это длина , а не конечное смещение:

Response.Write(text.Substring(25,10));
0 голосов
/ 16 февраля 2013

В течение этого времени вы можете использовать

(LINQ ElementAt) и (ElementAtOrDefault) метод. Однако метод расширения ElementAt выдает System.ArguementOutOfRangeException , когда указанный индекс имеет отрицательное значение или не меньше размера последовательности.

0 голосов
/ 22 марта 2012

Второй аргумент для SubString - это количество символов в подстроке.

Более простой способ сделать это.

    int startIndex=25; // find out startIndex
    int endIndex=35;   // find out endIndex, in this case it is text.Length;
    int length= endIndex - startIndex; // always subtract startIndex from the position wherever you want your substring to end i.e. endIndex
    // call substring
    Response.Write(text.Substring(startIndex,length));     

Вы можете выполнить некоторую операцию или вызвать функцию, чтобы получить значения индекса начала / конца.При таком подходе у вас меньше шансов получить какие-либо проблемы, связанные с индексами.

0 голосов
/ 22 марта 2012

Второй параметр, равный Substring, это то, как долго вы хотите, чтобы подстрока была, а не конечная точка подстроки. 25 + 35 находится вне диапазона исходной строки, поэтому выдается исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...