问题描述
stringstringtemp="AT+CNMI=2,2rrnOKrnAT+CMGF=1rrnOKrnrn+CMT:"8613554943735",,"07/11/15,09:11:23+32",145,36,0,0,"8613800755500",145,3rngjmrn";if(stringtemp.IndexOf("+CMT:")>0)//拆分接收到的短信{string[]result=stringtemp.Split(newstring[]{"+CMT:"},StringSplitOptions.RemoveEmptyEntries);//for(inti=1;i<result.Length;i++)//{intb=result[1].Length;intn=result[1].IndexOf("rn");inti=result[1].LastIndexOf("rn");stringc=result[1].Substring(n,i);拆分字符串result[1],提示索引和长度必须引用该字符串内的位置。B=80n=73i=78在字符串的范围内,怎么还提醒这个呢!
解决方案
解决方案二:
MSDN
解决方案三:
result[1].Substring(n,i)参数i是substring的长度而不是结束的位置应该为result[1].Substring(n,i-n)
解决方案四:
应该是stringc=result[1].Substring(n,i-n);吧?
解决方案五:
Substring(n,i)的意思是从第n个索引位置开始,取i位长度,你看看你的Substring(73,78),从73位开始,取78个字符, 对吗?
解决方案六:
Substring(n,m);n是起始位置,m是要截的字符个数.
解决方案七:
result[1].Substring(n,i-n)楼上说的对
解决方案八:
Substring(n,i)这个是从第n个开始长度为i的字符串
解决方案九:
stringtemp.IndexOf("+CMT:")>0-----------------------------------------IndexOf返回值是从0开始的。如果没返回则是-1!显然你用substring有问题!你可以用正则试试!
解决方案十:
stringtemp.IndexOf("+CMT:")>0-----------------------------------------IndexOf返回值是从0开始的。如果没返回则是-1!显然你用substring有问题!你可以用正则试试!这个应该是判断字符串中是否存在"+CMT:“这个字段吧