A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈顺亮 中级黑马   /  2012-9-27 20:29  /  1793 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏威夷のΑ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()第二个参数是索引下标还是字符串的长度

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
pos = str.IndexOf('e', pos + 1);

当在pos+1时 如果没有发现'e' 直接返回-1 发现了则返回位置

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
indexof()第二个参数
Number类型 [可选] - 一个整数,指定搜索的开始索引。
既不是索引下标也不是是字符串的长度

回复 使用道具 举报
张少甫 发表于 2012-9-27 20:41
indexof()第二个参数
Number类型 [可选] - 一个整数,指定搜索的开始索引。
既不是索引下标也不是是字符串 ...

就那个例子
string str="wewe";
int pos=str.indexof('e',4);
Console.WriteLine(pos);
这样程序也不报异常,为什么,指定开始的索引,如果是4的话不是超出字符串的索引长度了吗
回复 使用道具 举报
不能大于str1的长度,但如果小于或等于条件还是成立的,如果把pos = str.IndexOf('e', pos + 1);的改为pos = str.IndexOf('e', pos + 2);就会报错

请看

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

@Z(B7ZRA8QLJ9~HQM{PNF_S.jpg

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
陈顺亮 来自手机 中级黑马 2012-9-28 07:52:40
地板
王伟(wangwei) 发表于 2012-09-28 07:46
不能大于str1的长度,但如果小于或等于条件还是成立的,如果把pos = str.IndexOf('e', pos   1);的改为pos = str.IndexOf('e', pos   2);就会

多谢,了然了
来自:黑马程序员训练营论坛 Windows Phone 7 客户端来自: WindowsPhone客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马