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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 有钱就有希望 中级黑马   /  2013-10-23 10:05  /  1539 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 有钱就有希望 于 2013-10-23 20:51 编辑

string str = "大家好!我是XX。我是YY,我是zz";
int Index = str.IndexOf("我是");
Console.WriteLine(Index);
这里有三个字符串"我是"。但像上面这样写只能输出第一个"我是"的位置,要想同时输出所有"我是"的位置,请方法!!!

评分

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

查看全部评分

13 个回复

倒序浏览
把“我是”分开,各IndexOf一次。

点评

来点代码,给你加分  发表于 2013-10-23 20:59
回复 使用道具 举报
本帖最后由 小人渣子 于 2013-10-23 10:57 编辑

用respace替换掉每次遍历到的“我是”得到新字符串,使用递归再次遍历~

点评

给点代码  发表于 2013-10-23 20:59

评分

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

查看全部评分

回复 使用道具 举报
string.IndexOf(string str)方法表示输出一个int类型的索引 这个索引表示字符串str第一次出现在string字符串中的位置

所以你只能得到第一个“我是”的位置。

至于要得到字符串中所有“我是”的位置 我想到的办法就是
  string str="大家好!我是XX。我是YY,我是zz";
            int k = 0;
            do
            {
                int index = str.IndexOf("我是",k);
                if (index > 0)
                {
                    Console.WriteLine(index);
                    k = index+1;
                }
            } while (k<str.Length-1);
自己刚刚写的 希望对你有帮助!

评分

参与人数 1技术分 +2 收起 理由
haxyek + 2

查看全部评分

回复 使用道具 举报
string str="大家好!个是XX。个是YY,的是zz";
            int k = 0;
            do
            {
                int index = str.IndexOf("我是",k);
                if (index > 0)
                {
                    Console.WriteLine(index);
                    k = index + 1;
                }
                else
                {
                    Console.WriteLine("不存在要查找的字串");
                    k = str.Length;
                }
            } while (k<str.Length-1);
不好意思忘了不存在要查找字串的一种情况 改了一下

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
楼上的方法挺好,学习了
//IndexOf(String, Int32) 报告指定字符串在此实例中的第一个匹配项的从零开始的索引。 该搜索从指定字符位置开始。

评分

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

查看全部评分

回复 使用道具 举报
String.IndexOf 方法 (String)
指定字符串在此实例中的第一个匹配项的从零开始的索引
下面的示例使用 IndexOf 方法确定句子中动物名字的起始位置。 然后,该方法在此位置插入一个形容词来描述句子中的动物。
using System;

public class Example {
    public static void Main()
    {
        string animal1 = "fox";
        string animal2 = "dog";

        string strTarget = String.Format("The {0} jumped over the {1}.",
                                         animal1, animal2);

        Console.WriteLine("The original string is:{0}{1}{0}",
                          Environment.NewLine, strTarget);

        Console.Write("Enter an adjective (or group of adjectives) " +
                      "to describe the {0}: ==> ", animal1);
        string adj1 = Console.ReadLine();

        Console.Write("Enter an adjective (or group of adjectives) " +
                      "to describe the {0}: ==> ", animal2);   
        string adj2 = Console.ReadLine();

        adj1 = adj1.Trim() + " ";
        adj2 = adj2.Trim() + " ";

        strTarget = strTarget.Insert(strTarget.IndexOf(animal1), adj1);
        strTarget = strTarget.Insert(strTarget.IndexOf(animal2), adj2);

        Console.WriteLine("{0}The final string is:{0}{1}",
                          Environment.NewLine, strTarget);
    }
}

评分

参与人数 1技术分 +2 收起 理由
haxyek + 2 能否精简精简

查看全部评分

回复 使用道具 举报
利用正则表达式的Regex.Matches方法,这样就可以提取到三个了

评分

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

查看全部评分

回复 使用道具 举报
根据大家给出的意见我今天下午搞了几个小时也想出了个方法,多次测试好像也没什么问题.
string str = "大家好!我是XX。gg我是YY大家好!我是XX。我是YY";
  int First = 0;int count=0; string sa=string.Empty;
              for (int j = 0; j < str.Length;j++ )
              {
                  for (int k = 0; k < str.Length - 1; k++)
                  {
                  
                      if (str[j].ToString() + str[k + 1].ToString() == "大家")
                      {
                          count++;         //计算”我是“出现的次数
                      }
                  }
              }
              for (int i = 0; i <count; i++)                  
              {   
                   First = str.IndexOf("我是",First);          //从第0个开第一次输出"我是"的位置:
             First++;                                     //First++;就是为了第二次输出的时候当前的位置的下一个字符开始计算。不然结果还上次一样
                   Console.WriteLine("我是第{0}次出现的位置{1}", i+1,First );                //依次输出
              

              }

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报

同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
回复 使用道具 举报
调试通过了试试:

string str = "大家好!我是XX。我是YY,我是zz";
            int Index = 0;
            while (Index >= 0&&Index < str.Length)
            {
                Index = str.IndexOf("我是", Index + 1);
                //如果找不到index就会返回-1,当index小于零的时候就跳出循环
                if(Index <0)
                break;            
                Console.WriteLine(Index);
            }

点评

标记为【已解决】的,再次回复不加分,多回复一些【未解决】的。  发表于 2013-10-25 23:09
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马