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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王洪磊 于 2013-6-21 10:18 编辑

如题,今天看基础视频这样一个题,但是没有答案,于是自己写了一下,感觉不太完善,请高手帮忙指导。
  1.   Console.WriteLine("请输入一句话");
  2.             string str = Console.ReadLine();
  3.             int i = str.IndexOf('e');
  4.             while (i > -1)
  5.             {
  6.                  i += str.IndexOf('e');
  7.                 if (i >= str.Length)
  8.                    break;
  9.                 i = str.IndexOf('e', i);
  10.                 Console.WriteLine(i);
  11.             }
  12.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

5 个回复

正序浏览
string strs = Console.ReadLine();//要求用户输入一个待测的字符串。(区分大小写)
            //string strs = Console.ReadLine().ToLower();//该句不区分大小写。
            char[] chars = strs.ToArray();//将输入字符串转成字符数组。
            int count = 0;
            int[] position = new int[strs.Length];
            for (int i = 0; i < chars.Length; i++)//用for循环找出其中‘e’的是第几个字符。
            {
                if (chars[i].Equals('e'))//让数组中所有元素和‘e’进行比较是否相等,相等则输出
                {
                    position[count] = i + 1;
                    count++;
                }
            }
            Console.Write(strs+"中的第");//不换行
            for (int i = 0; i < count; i++)
            {
                if (i != count - 1)//让最后一个不输出”、“。
                {
                    Console.Write(position[i] + "、"); //不换行。
                }
                else
                {
                    Console.Write(position[i]);//不换行。
                }
            }
            Console.WriteLine("个字符是”e“!");
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
Console.WriteLine("请输入一句话");
            string str = Console.ReadLine();
            int i = 0;
            do
            {
               i = str.IndexOf('e', i+1);
               Console.WriteLine(i + 1);
            } while (i!=-1);            
           Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 关关雎鸠 于 2013-6-5 10:13 编辑
  1. static void Main(string[] args) {
  2.             //输入一个字符串,如何找出字符串中所有e的位置?
  3.             string str = Console.ReadLine();
  4.             string index = string.Empty;    //存放e的位置
  5.             for (int i = 0; i < str.Length; i++) {
  6.                 char c = str[i];
  7.                 if (c == 'e') {                    
  8.                     index += i.ToString() + ",";    //把所有出现e的位置(索引)拼接起来
  9.                 }
  10.             }
  11.             Console.WriteLine(index);   //输出e的位置

  12.             Console.ReadKey();
  13.         }
复制代码
不知道我这个行不行,没有区分大小写,只是简单的示例下。注意索引从0开始的。

W.png (6.37 KB, 下载次数: 0)

W.png
回复 使用道具 举报
上代码:{:soso_e100:}
  1. static void Main(string[] args)
  2.         {
  3.             //输入一个字符串,如何找出字符串中所有e的位置?
  4.             string strs = Console.ReadLine();
  5.             //转成数组
  6.             char[] chars = strs.ToArray();
  7.            
  8.             for (int i = 0; i < chars.Length; i++)
  9.             {                  
  10.                 if(chars[i].Equals('e'))
  11.                 {
  12.                     Console.WriteLine(i);
  13.                 }
  14.             }
  15.             Console.ReadKey();
  16.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
首先将待测字符串 str 转成 char 数组str[str.length-1],另外再定义一个int数组int[str.length-1],
用for循环遍历字符数组,在 for 里面用 if 判断,
如果=='e',则用int[j]记下对应的i 值(可能是i+1,是实际情况而定),并且将 j++,以便下一次使用,
如果!=‘e’ ,则继续循环,直到结束
结束以后,int[]记录下的就是  ‘e’  的位置

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马