我要替换一个文本中所有 格式为**内容** 的部分
每替换一个,要在“内容”前面加一个唯一编号,变成***编号 内容*
但“内容”可能是重复的
如果找出“内容”,用string.replace替换,会出现一下被替换掉好多个情况,编号就不对了
有什么好办法呢

解决方案 »

  1.   

    int i = 1;
                string str = "**内容** **内容** **内容** **内容** v **内容** ";
                str = Regex.Replace(str, @"(?<=\*\*)[^\*\s]+(?=\*\*)", e => (i++).ToString() + e.Value);
                Console.WriteLine(str);
    这样?
      

  2.   

    using System.Text.RegularExpressions;        static void Main(string[] args)
            {
                string src = "Person : 帅哥; Person : 美女; Person : 脑残";
                Console.WriteLine(src);
                MatchEvaluator evaluator = new System.Text.RegularExpressions.MatchEvaluator(OnEachMatch);
                string dst = Regex.Replace(src, @"Person", evaluator);
                Console.WriteLine(dst);
            }
            static int id = 0;
            static string OnEachMatch(Match m)
            {
                id++;
                return id.ToString()+ " " + m.Value;
            }
      

  3.   

    是你要的结果吗?Person : 帅哥; Person : 美女; Person : 脑残
    1 Person : 帅哥; 2 Person : 美女; 3 Person : 脑残
    Press any key to continue . . .
      

  4.   


    int i = 1;
                string str = "猪内容飞机 坦克内容大炮 火车内容地球 地内容欧赔 v 欧盟内容欧姆 ";            str = Regex.Replace(str, @"(内容)", e => (i++).ToString() + e.Value);
                Console.WriteLine(str);顶二楼
    楼主的 * 是通配符吧