例如  一个字符串  aaaaasaaaasaaaasaaa
我想用indexof(s)把所有s的下标都抽出来  怎么办得到?

解决方案 »

  1.   


                List<int> Positions = new List<int>();
                string stringData = "aaaaasaaaasaaaasaaa";
                int begin = 0;
                int current = 0;
                while(true)
                {
                    current = stringData.IndexOf('s', begin);
                    if (current != -1)
                    {
                        Positions.Add(current);
                        begin = current + 1;
                    }
                    else
                    {
                        break;
                    }
                }            Console.WriteLine(Positions);
      

  2.   

    正则就是风装好的这个功能private static void TestRegex04()
    {
        string 测试文本 = "aaaaasaaaasaaaasaaa";
        string 要查找的字符串 = "s";
        MatchCollection 捕获集合 = Regex.Matches(测试文本, Regex.Escape(要查找的字符串));
        Console.WriteLine("查找的字符为:" + 要查找的字符串 + "一共捕获到 " + 捕获集合.Count.ToString() + "个匹配"); 
        foreach (Match 单个捕获 in 捕获集合)
        {
            Console.WriteLine("位置:" + 单个捕获.Index);
        }
    }结果
    查找的字符为:s一共捕获到 3个匹配
    位置:5
    位置:10
    位置:15
      

  3.   

                string str = "aaaaasaaaasaaaasaaa";            var Query = str.ToCharArray().Select((s, i) => new { s = s, i = i }).Where(v => v.s == 's');            foreach (var v in Query)
                {
                    Console.WriteLine(v.i);
                }            /*
                 5
                10
                15
                 */