2

我正在尝试将字符串拆分为 2 个子项。第一个包含前 236 个(0 到 235)个字符,第二个包含从 237 到字符串末尾的字符。

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

strLength 正在生成错误:索引和长度必须引用字符串中的位置。参数名称:长度

有什么帮助吗?

4

6 回答 6

3

你需要这样的东西:

secondstr = str.Substring(235, strLength - 235)

因为 strLength 是整个字符串的长度,并且您从位置 235 开始,所以您将越过字符串的末尾。

于 2011-08-09T16:50:06.697 回答
1

如果您只想到字符串的末尾,那么您可以在使用 Substring 方法时省略长度参数。默认是转到字符串的末尾。

secondstr = str.Substring(236)

将为您完成工作。

于 2011-08-14T18:59:19.833 回答
1

第二个参数是您需要多少个字符,而不是最终位置。尝试类似: secondstr = str.Substring(235, strLength-235) (也许你还需要-1)

于 2011-08-09T16:50:19.453 回答
1

通常 data 第二个参数将是您想要的子字符串的长度,在这种情况下strLength-236。我不知道 vb.net,但在 C# 中,使用子字符串时不需要指定第二个变量strLengthsecondstr因为默认值位于字符串的末尾。

[编辑] - 已修复

于 2011-08-09T16:50:39.627 回答
0

我注意到没有人按照描述在您的代码中发现另一个错误。

的第二个参数Substring是返回的长度,因此firstStr包含与 相同的内容Left(str, 235),即它包含您编写的 235 个字符,而不是 236 个。

为了完整起见,这是您查询的 VB 解决方案:

firststr = Left(str, 236)
secondstr = Mid(str, 237)
于 2012-06-19T15:51:45.473 回答
0

据我所知,您的变量strLength的值超出了 string 的边界str

于 2011-08-09T16:50:29.637 回答