Индекс и длина должны относиться к местоположению в строке.?

Мои входные строки

  1. inputData = "99998UNKNOWN"
  2. inputData = "01000AMEBACIDE/TRICHOM/ANTIBAC 1"
  3. inputData = "34343AMEBACIDE/ТРИХОМ/АНТИБАКСАДВА1"

ID = inputData.Substring(0,5); Name = inputData.Substring(5,30); Level = inputData.Substring(35,1);

Я получаю следующую ошибку: индекс и длина должны относиться к местоположению в строке.

Я понимаю, ошибка связана с тем, что длина, указанная в подстроке для «Имя», не соответствует первому вводу. Есть ли способ решить эту проблему с любой длиной ввода?


person Subash A    schedule 15.02.2017    source источник
comment
Непонятно, какую обработку вы хотите. Вы можете сначала проверить длину inputData...   -  person Jon Skeet    schedule 15.02.2017
comment
@dasblinkenlight проблема с форматированием. фиксированный   -  person Hamid Pourjam    schedule 15.02.2017
comment
@dasblinkenlight Да. Кажется, что-то не так с вопросом.   -  person Hamid Pourjam    schedule 15.02.2017
comment
@dasblinkenlight Только 30. пожалуйста, проверьте это еще один входной образец. inputData = 34343AMEBACIDE/ТРИХОМ/АНТИБАКСАДВА1   -  person Subash A    schedule 15.02.2017


Ответы (1)


Один из подходов состоит в том, чтобы добавить суффикс «дозорный» в конец строки, прежде чем брать подстроки. Теперь вы можете добавить его в строку данных, прежде чем брать из нее подстроки. Пока суффикс имеет достаточную длину, вы никогда не получите исключение индекса/длины:

var padded = inputData.PadRight(32);
ID = padded.Substring(0, 5).Trim();
Name = padded.Substring(5, 30).Trim();
Level = padded.Substring(30, 1).Trim();

Однако теперь ваш код должен проверять, пусто ли ID, Name или Level.

person Sergey Kalinichenko    schedule 15.02.2017