日期:2014-05-17  浏览次数:20361 次

请教字符串替换问题
例如有个字符串:
<序号>dfsdfsd
<序号>123123
<序号>sdfdsa3343
<序号>2534dsdsf
<序号>35345asw12

输出如下:
一、dfsdfsd
二、123123
三、sdfdsa3343
四、2534dsdsf
五、35345asw12

字符串不固定,要把<序号>换成实际的数字,用什么方法实现效率比较高,方便的话附上代码
如果统计出出现次数,循环替换,是不是效率很低的?

谢谢

------解决方案--------------------
可以用正则
  string str = @"<序号>dfsdfsd
<序号>123123
<序号>sdfdsa3343
<序号>2534dsdsf
<序号>35345asw12";
            int n = 0;
            str = Regex.Replace(str, "<序号>", delegate(Match m)
            {
                return ++n + "、";
            });
            Console.WriteLine(str);
------解决方案--------------------
正侧 比对  for 循环替换  
------解决方案--------------------
你可以用split('<序号>') 分开
然后for循环string[]



个人感觉效率应该是可以的
------解决方案--------------------
按照你要的结果,但是只能编到10,你可以忽略

 string str = @"<序号>dfsdfsd
<序号>123123
<序号>sdfdsa3343
<序号>2534dsdsf
<序号>35345asw12";
        int n = -1;
        string[] numbers = new string[] { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
        str = Regex.Replace(str, "<序号>", delegate(Match m)
        {
            n++;
            return numbers[n] + "、";
        });
          Console.WriteLine(str);