Подстрока C # на устройстве Windows Mobile, выдающая ошибку «вне допустимого диапазона» с допустимым диапазоном - PullRequest
0 голосов
/ 10 сентября 2018

Мой код:

using (StreamReader sr = new StreamReader("Flash Disk/thing.ini"))
            {
                text = sr.ReadToEnd();
                int length = text.Length;  //3722
                int indexStart = text.IndexOf("DeviceName="); //3126
                int indexEnd = text.IndexOf("DeviceID="); //3145
                string deviceName = text.Substring(indexStart, indexEnd);
                Console.WriteLine(name);
            }

Это взрывается в строке deviceName = text.Substring (indexStart, indexEnd);

Я получаю ArgumentOutOfRangeException, и он говорит мне 'Указанный аргументбыл вне диапазона допустимых значений.Ничего другого.

Я здесь потерян.Есть идеи?

1 Ответ

0 голосов
/ 10 сентября 2018

В вашем вопросе общая длина строки равна 4752

int length = text.Length;  //4752

Но Подстрока номер второго параметра представляет количество символов, которое вы хотите получить.

В вашем коде начните с indexStart(4176) и получите indexEnd(4195), который будет за строкой Length.

Я думаю, вам нужно использовать indexEnd - indexStart для второго параметра

int indexStart = text.IndexOf("DeviceName="); //4176
int indexEnd = text.IndexOf("DeviceID="); //4195
string deviceName = text.Substring(indexStart, indexEnd - indexStart);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...