Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разделить строку на 2 разные подстроки vb.net

Автор вопроса: l3_08Ответов: 6

Я пытаюсь разбить строку на 2 подпрограммы. Первый содержит первые 236 (от 0 до 235) символов, а второй - от 237 до конца строки.

firststr = str.Substring(0, 235)
secondstr = str.Substring(235, strLength)  'strLength is the total length of the string

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

Любая помощь?

stringsubstring

Ответы

Ответ 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)

сделает работу за вас.

Ответ 5 · Leniel Maccaferri

Насколько я вижу, ваша переменная strLength имеет значение, выходящее за границы строки str.

Ответ 6 · Mark Hurd

Я отмечаю, что никто не обнаружил другую ошибку в вашем коде, как описано.

Второй аргумент Substring - это возвращаемая длина, поэтому firstStr содержит то же, что и Left(str, 235), то есть содержит 235 символов, как вы написали, а не 236.

Для полноты вот решение VB для вашего запроса:

firststr = Left(str, 236)
secondstr = Mid(str, 237)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы