我怎样才能得到空间“";作为炭
本文关键字: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'
作为字符串的最后一个字符时,您希望发生什么?
它应该根本不设置next1
和next2
吗?它应该将它们默认为null
还是空字符串?
通常有两种选择。将CCD_ 13循环从0更改为CCD_,因此,您永远不会处理最后两个字符(这意味着next1
和next2
不会从以前的任何字符更改,或者在if
内部,您需要检查i+1
是否大于字符串的长度,如果是,请执行"其他操作",然后对i+2
执行相同操作。"其他操作"可以是任何数量的选项。
当索引中的e
或E
位于字符串的最后一个字符之前时,第二行(text[i + 2]
)将引发错误。如果第一行(text[i + 1]
)是最后一个字符,它将抛出。
您给出的示例字符串不会引发异常。
此时,text[i + 2]
将确实超出字符串(字符数组)的范围。
你需要在这之前循环到:
for (int i = 0; i < text.Length - 2; i++)
当i是最后一个或几乎最后一个元素时,您尝试访问数组外的元素
尝试将循环中的交互减少2:)