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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖云 中级黑马   /  2012-6-8 20:14  /  4791 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

练习题:让用户输入一句话,找出所有e的位置. 我实在是没办法做出来了,真心请教各位高手
用IndexOf只能找出第一个e的位置,后面其他e的位置就不能找出来了.

评分

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

查看全部评分

11 个回复

倒序浏览
查找某字符在字符串中的所有位置时,可以首先通过ToCharArray方法将字符串转换为Char类型的数组,然后循环访问该数组,如果数组中的值与要查找的字符相同,则将其位置取出。查找某字符在字符串中所有位置的实现代码如下:

private void button1_Click(object sender, EventArgs e)
        {
            string str = textBox1.Text.Trim();
            char[] myChar = str.ToCharArray();
            for (int i = 0; i < myChar.Length; i++)
            {
                if (myChar[i].ToString() == textBox2.Text.Trim())
                    MessageBox.Show("字符串" + textBox2.Text.Trim() + "在" + textBox1.Text.Trim() + "中的位置为:" + i.ToString() + "\n");
            }
        }

评分

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

查看全部评分

回复 使用道具 举报
看的别人的  我也不会做 求教 {:soso_e113:}
回复 使用道具 举报
private void button1_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            string wz="字母e的位置是:";
            int i,j;
            for (i = 0; i <= s.Length-1; i++)
            {
                j = string.Compare(s, i, "e", 0, 1);
                wz += j==0?(i+1).ToString() + " ":"";
               
            }
            label1.Text = wz;
        }

评分

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

查看全部评分

回复 使用道具 举报
用循环遍历用户输入数组,如果该字符等于e则记录下标。遍历完就找到所有e的位置了。

评分

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

查看全部评分

回复 使用道具 举报
举个小例子,例如求“ADSFGEHERGASDF”中“A”出现的次数?
方法一
     采用for循环从头遍历字符串并统计:
                  int c1=0;
                  for(int i=0;i {if(str[i]==‘A‘){c1++;}}
方法二
     将字符串中所有要查找的字符去除,然后比较去除前后的字符串长度即可。
                   int  c2=str.Length-str.Replace("A",String.Empty).Length;
方法三
    用要查找的字符为分隔符,将原字符串分隔为多个子串,然后求子串的数目即可。
                   int  c3=str.Split(newchar[]{‘A‘}).Length-1;

评分

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

查看全部评分

回复 使用道具 举报
string s = "desdafeseeslsje";                //假设这是用户输入的字符串
char[] array = s.ToCharArray();            //将它装换为字符数组
for (int i = 0; i < array.Length;i++ )
{
      if(array[i].Equals('e'))
      {
            Console.Write("e的下标为"+i);
      }
}

评分

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

查看全部评分

回复 使用道具 举报
string s = "adfdfeeefdfdfeffe";
            for (int i = 0; i < s.Length; i++) //循环比较每个字符段,发现与e匹配就输出e的下标
            {
                if (s[i] == 'e')
                {
                   Console.WriteLine("e位置下标" + i);

                }

            }

评分

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

查看全部评分

回复 使用道具 举报
console.writeline("请输入一个字符串:");
string str=console.readline(); //接受用户输入的字符串。
int l=0;
for (int i = 0; i < str.Length; i++)
{
    if(str==‘e’)
{
l++;
Console.WriteLine("第{0}个e出现在{1}",l,i);
}
if(l==0)
{
console.writeline("所输入的字符串中没有e");
}
console.readkey();


评分

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

查看全部评分

回复 使用道具 举报
张雪风 发表于 2012-6-8 21:37
查找某字符在字符串中的所有位置时,可以首先通过ToCharArray方法将字符串转换为Char类型的数组,然后循环 ...

同学字符串是从0开始检索的,转换成实际的位置i要记得+1
回复 使用道具 举报
namespace 一个关于e的算法
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一组字符串,比如:hsjfhlskfkls");
            string str = Console.ReadLine();   //读取用户输入
            Console.WriteLine("请输入想要在这组字符串中找到的单个字符,比如:【e】 我可以准确的计算出e在字符串中的位置");
            string target = Console.ReadLine();
            Console.WriteLine("正在计算.......");

            char[] ch = str.ToCharArray();  //返回输入字符串的单个数组形式
            int total = 0;    //用来计算有多少个满足用户输入的字符个数
            for (int i = 0; i < ch.Length; i++)
            {
                if (ch[i] == Convert.ToChar(target))
                {
                    total++;
                }
            }
            string ss = null;
            for (int i = 0; i < ch.Length; i++)
            {
                if (ch[i] == Convert.ToChar(target))
                {
                    ss+=(i + 1).ToString()+",";
                }
            }
            Console.WriteLine("共有{0}项匹配",total);
            Console.WriteLine("他们分别是第:{0}项",ss);

                Console.ReadKey();

        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
其实我觉得用for循环遍历出e的位置是最简单,找出所有的。。。。不就是从前往后找,每个都要比较的。
//找出一个字符串中所有的e
            string str = "asdfejleneselle";  //譬如这是输入的字符串
            Console.Write("字符串"+str+"中e的位置:");
            for (int i = 0; i < str.Length; i++)  //只要从前往后的遍历每一个字符就好
            {
                if (str[i].Equals('e'))   //当这个字符与e相同时,输出 当然也可以写成srt[i]=='e'
                {
                    Console.Write("{0} ", i + 1);//字符串的位置是从0开始的,但是一般人都是从1开始数
                }
            }
             Console.ReadKey();

评分

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

查看全部评分

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