为什么在查找子字符串时获取ArgumentOutOfRangeException

时间:2016-12-30 07:19:38

标签: c#

clines[i]的长度为69 我已初始化index = 50

代码:

string substr = clines[i].Substring(index, clines[i].Length);

现在我想要从索引5069的子字符串 但我得到的是异常

  

ArgumentOutOfRangeException:索引和长度必须引用一个位置   在字符串中。参数名称:长度

为什么我得到这个例外?

2 个答案:

答案 0 :(得分:5)

代码中出现错误的直接原因是index + clines[i].Length不得超过实际字符串的长度clines[i].Length,这就是为什么你会遇到错误的原因每个非零index

尝试删除最后一个参数(如果你想从index开始直到结尾获取子字符串):

 string substr = clines[i].Substring(index);

编辑两个参数的(罗嗦)替代

 string substr = clines[i].Substring(index, clines[i].Length - index);

请注意,最后一个参数是子串的长度,而不是原始的长度。

答案 1 :(得分:1)

在C#中,第二个参数表示要采用的段的长度,而不是您希望段扩展到的索引。

另外,如果你想要正确的字符串部分 - 你可以不用第二个参数。

clines[i].Substring(50, 19);