黑马程序员技术交流社区

标题: 查找位置 [打印本页]

作者: mosuge7    时间: 2013-4-20 16:15
标题: 查找位置
本帖最后由 mosuge7 于 2013-4-21 12:43 编辑

        请用户输入一句话,然后找出所有e的位置,我用下面的代码,只是找出第一个e所在的位置,那所有的e的位置怎么找呢?   
         Console.WriteLine("请输入一句话");
                   string str=Console.ReadLine();
                   Console.WriteLine(str.IndexOf("e"));
           


           
作者: 陈帅    时间: 2013-4-20 16:47
  1.   Console.WriteLine("输入一句话,找出里面e的位置");
  2.             string input = Console.ReadLine();
  3.             int startIndex = input.IndexOf('e');//记录第一次出现e的索引位置
  4.             Console.WriteLine("第1次出现e的位置是{0}", startIndex);
  5.             int i = 1;//记录e出现的次数
  6.             while (startIndex != -1)
  7.             {
  8.                 i++;//每进来一次自加1
  9.                 startIndex = input.IndexOf('e', startIndex + 1);//从前一次出现索引+1的位置再找e
  10.                 Console.WriteLine("第{0}次e出现的位置是{1}", i, startIndex);
  11.             }
  12.             Console.ReadKey();
复制代码

作者: mosuge7    时间: 2013-4-20 17:06
陈帅 发表于 2013-4-20 16:47

我运行了一下,最后一次不对啊,是-1!
作者: 陈帅    时间: 2013-4-20 17:37
mosuge7 发表于 2013-4-20 17:06
我运行了一下,最后一次不对啊,是-1!

恩~~ 这个方法肯定会出个-1~~
作者: mosuge7    时间: 2013-4-20 17:49
陈帅 发表于 2013-4-20 17:37
恩~~ 这个方法肯定会出个-1~~

能想办法让它不出吗?
作者: 张松    时间: 2013-4-20 20:29
string str = "sdfsdfefdsfsdfefdsfsdfefdsfefdsfe";
            int index = str.IndexOf('e');//记录第一次出现e的索引位置
            int i = 1;
            Console.WriteLine("第{0}次出现e的位置是{1}", i, index);



            while (index != -1)
            {
                i++;
                index = str.IndexOf('e', index + 1);//从前一次出现索引+1的位置再找e
                if (index == -1)
                {
                    break;
                }

                Console.WriteLine("第{0}次出现e的位置是{1}", i, index);
            }
            Console.ReadKey();
作者: 林东枫    时间: 2013-4-20 20:37
  1. Console.WriteLine("输入一句话,找出里面e的位置");
  2.             //接收E的个数
  3.            int i = 1;
  4.           string input = Console.ReadLine();
  5.           //记录第一次出现e的索引位置
  6.           int startIndex = input.IndexOf('e');
  7.            //第一次找不到E的时候显示,输入字符串没有E;
  8.           if (startIndex == -1)
  9.           {
  10.               Console.WriteLine("你输入的字符串里没有e");
  11.           }
  12.           else
  13.           {
  14.               Console.WriteLine("第1次出现e的位置是{0}", startIndex+1);
  15.              //判断是否有找到下个E
  16.               while (startIndex<input.Length )
  17.               {
  18.                   //以第一次找到E的位置 ,为下次开始找e 的起始位置,继续往下找
  19.                   startIndex = input.IndexOf("e", startIndex + 1);
  20.                   if (startIndex != -1)
  21.                   {
  22.                       i++;
  23.                       Console.WriteLine("第{0}次出现e的位置是{1}", i, startIndex+1);
  24.                   }
  25.                   else
  26.                   {
  27.                       break;
  28.                   }               
  29.               }
  30.               
  31.           }
  32.           Console.ReadKey();
复制代码
这是我在 陈帅   代码上 进行补充的 , 不回出现后面的 -1;
希望对你有帮助!
作者: 张林杰    时间: 2013-4-20 20:38
本帖最后由 张林杰 于 2013-4-20 20:40 编辑

自己以前写的
  1.         static void Main(string[] args)
  2.         {
  3.             Console.WriteLine("请输入一句话!");
  4.             string str = Console.ReadLine();
  5.             int[] pos = new int[str.Length];  //用int型数组记录e的位置         
  6.             pos[0] = str.IndexOf("e"); //此处先进行一次判断

  7.             int i = 0;
  8.             for (i = 0; pos[i] != -1; i++) //IndexOf()返回值-1作为判断条件,说明没检索到e
  9.             {
  10.                 pos[i+1] = str.IndexOf("e",pos[i] + 1);//类似递归
  11.             }

  12.             for (int j = 0; j < i;j++)
  13.             {
  14.                 Console.WriteLine("e的位置为{0} ",pos[j]);//循环输出e的所有位置
  15.             }

  16.             Console.ReadKey();
  17.         }
复制代码

作者: ↖落葉下♀媃媚    时间: 2013-4-20 21:10
试试这个
string s = "hgfdgfdjsdkdl";
            char[] list = s.ToCharArray();// //将字符串转换为字符数组,即将字符串变成一个个字符
            Console.WriteLine("d所在的位置分别为:");
            for (int i = 0; i < s.Length;i++ )
            {
                if(list[i]=='d')
                {
                    Console.WriteLine("第{0}个位置",i+1);
                }
            }

            Console.ReadKey();
作者: mosuge7    时间: 2013-4-21 12:41
张松 发表于 2013-4-20 20:29
string str = "sdfsdfefdsfsdfefdsfsdfefdsfefdsfe";
            int index = str.IndexOf('e');//记录第 ...

嗯嗯,谢谢!
作者: mosuge7    时间: 2013-4-21 12:41
张林杰 发表于 2013-4-20 20:38
自己以前写的

明白了,谢谢!
作者: mosuge7    时间: 2013-4-21 12:42
↖落葉下♀媃媚 发表于 2013-4-20 21:10
试试这个
string s = "hgfdgfdjsdkdl";
            char[] list = s.ToCharArray();// //将字符串转换为字 ...

这个方法也不错,谢谢!




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