我怎样才能得到空间“";作为炭

本文关键字:quot 空间 | 更新日期: 2023-09-27 17:57:56

我有一个text:"The camel is big",然后我寻找字母"e",然后我想把接下来的两个字母存储在字符串变量中,所以我的next1会得到值"l"next2会存储空间" ";但编译器抛出一个异常,消息为索引超出了数组的界限。这是代码:

for (int i = 0; i < text.Length; i++)
{
    if (text[i]=='e' || text[i]=='E')
    {
        next1 = text[i + 1].ToString();
        next2 = text[i + 2].ToString(); //this throws exception...
    }
}

我理解并感谢您的评论,是的,当i处于最后一点时,它会尝试获得下一个不存在的字母。好吧,我该怎么防止呢,我的文字很大,有时"e"可能是最后一个字母。。。

我怎样才能得到空间“";作为炭

那么,当有一个'e'作为字符串的最后一个字符时,您希望发生什么?

它应该根本不设置next1next2吗?它应该将它们默认为null还是空字符串?

通常有两种选择。将CCD_ 13循环从0更改为CCD_,因此,您永远不会处理最后两个字符(这意味着next1next2不会从以前的任何字符更改,或者在if内部,您需要检查i+1是否大于字符串的长度,如果是,请执行"其他操作",然后对i+2执行相同操作。"其他操作"可以是任何数量的选项。

当索引中的eE位于字符串的最后一个字符之前时,第二行(text[i + 2])将引发错误。如果第一行(text[i + 1])是最后一个字符,它将抛出。

您给出的示例字符串不会引发异常。

此时,text[i + 2]将确实超出字符串(字符数组)的范围。

你需要在这之前循环到:

for (int i = 0; i < text.Length - 2; i++)

当i是最后一个或几乎最后一个元素时,您尝试访问数组外的元素
尝试将循环中的交互减少2:)