Я пытаюсь разбить строку на 2 подпрограммы. Первый содержит первые 236 (от 0 до 235) символов, а второй - от 237 до конца строки.
firststr = str.Substring(0, 235)
secondstr = str.Substring(235, strLength) 'strLength is the total length of the string
strLength генерирует ошибку: индекс и длина должны относиться к местоположению в строке. Имя параметра: длина
Любая помощь?
Ответ 1 · рейтинг 3 · James Johnson
Вам нужно что-то вроде этого:
secondstr = str.Substring(235, strLength - 235)
Поскольку strLength - это длина всей строки, и вы начинаете с позиции 235, вы идете дальше конца строки.
Ответ 2 · рейтинг 1 · Eddy
Второй аргумент - это количество символов, которое вам нужно, а не конечная позиция. Попробуйте что-то вроде: secondstr = str.Substring(235, strLength-235) (возможно, вам также нужно -1)
Ответ 3 · рейтинг 1 · Evan Layman
Обычно data вторым аргументом будет длина нужной подстроки, в данном случае strLength-236. Я не знаю vb.net, но в C# вам не нужно указывать вторую переменную strLength для secondstr при использовании подстроки, потому что по умолчанию идет конец строки.
[править] - исправлено
Ответ 4 · рейтинг 1 · Karl S
Если вы просто хотите перейти к концу строки, вы можете не указывать параметр длины при использовании метода Substring. По умолчанию идет в конец строки.
secondstr = str.Substring(236)
сделает работу за вас.
Ответ 6 · Mark Hurd
Я отмечаю, что никто не обнаружил другую ошибку в вашем коде, как описано.
Второй аргумент Substring - это возвращаемая длина, поэтому firstStr содержит то же, что и Left(str, 235), то есть содержит 235 символов, как вы написали, а не 236.
Для полноты вот решение VB для вашего запроса:
firststr = Left(str, 236)
secondstr = Mid(str, 237)