黑马程序员技术交流社区

标题: 关于IndexOf的问题 [打印本页]

作者: 陈顺亮    时间: 2012-9-27 20:29
标题: 关于IndexOf的问题
本帖最后由 夏威夷のΑI 于 2012-10-5 01:08 编辑
  1. string str = "wewe";
  2.             int pos = str.IndexOf('e');
  3.             while (pos != -1)
  4.             {
  5.                 Console.WriteLine(pos);
  6.                 pos = str.IndexOf('e', pos + 1);
  7.             }
  8.             Console.WriteLine(pos);
  9.             Console.ReadKey();
复制代码
这个例子中,当走到字符串最后一个e时,pos的值为3,再次进入循环,pos+1就成了4,不是超出了索引,为何不报异常还可以继续,indexof()第二个参数是索引下标还是字符串的长度
作者: 张少甫    时间: 2012-9-27 20:38
pos = str.IndexOf('e', pos + 1);

当在pos+1时 如果没有发现'e' 直接返回-1 发现了则返回位置
作者: 张少甫    时间: 2012-9-27 20:41
indexof()第二个参数
Number类型 [可选] - 一个整数,指定搜索的开始索引。
既不是索引下标也不是是字符串的长度


作者: 陈顺亮    时间: 2012-9-27 21:06
张少甫 发表于 2012-9-27 20:41
indexof()第二个参数
Number类型 [可选] - 一个整数,指定搜索的开始索引。
既不是索引下标也不是是字符串 ...

就那个例子
string str="wewe";
int pos=str.indexof('e',4);
Console.WriteLine(pos);
这样程序也不报异常,为什么,指定开始的索引,如果是4的话不是超出字符串的索引长度了吗
作者: 王伟(wangwei)    时间: 2012-9-28 07:46
不能大于str1的长度,但如果小于或等于条件还是成立的,如果把pos = str.IndexOf('e', pos + 1);的改为pos = str.IndexOf('e', pos + 2);就会报错

请看

@Z(B7ZRA8QLJ9~HQM{PNF_S.jpg (75.01 KB, 下载次数: 38)

@Z(B7ZRA8QLJ9~HQM{PNF_S.jpg

作者: 陈顺亮    时间: 2012-9-28 07:52
王伟(wangwei) 发表于 2012-09-28 07:46
不能大于str1的长度,但如果小于或等于条件还是成立的,如果把pos = str.IndexOf('e', pos   1);的改为pos = str.IndexOf('e', pos   2);就会

多谢,了然了
来自:黑马程序员训练营论坛 Windows Phone 7 客户端




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2