广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    asp.net高效替换大容量字符实现代码

    2018-05-16 07:55:06 次阅读 稿源:互联网
    广告
    一般进行替换操作都这样:
    代码如下:

    str=str.replace(字符串一,字符串二)

    不难发现一个问题,如果str要循环替换很多次,下一次替换时会累加上上次替换的内容,并且全遍历一次,如果字符串二很多,替换的过程就像阶梯效果,越来越大,所以速度越来越慢。要解决这个问题只能找另外的方法替换这种表达方式。

    如何以更高效率代替这种操作? 思路如下:
    每次替换完后,在下次替换时先排除这次替换的内容,累加本次替换的内容。
    代码如下:

    public Regex returnMatch(String str)//匹配正则
    {
    Regex r;
    r = new Regex(@str,RegexOptions.IgnoreCase);
    return r;
    }
    /// <summary>
    /// 替换
    /// </summary>
    /// <param name="sDetail">要处理的字符</param>
    /// <param name="regex">正则表达式</param>
    /// <param name="replace_str">要替换的内容</param>
    /// <returns>处理完的字符</returns>
    public string replace(string sDetail,string regex)
    {
    int last_index=0;
    string cut_str=sDetail;
    string return_str="";
    Regex r;
    Match m;
    r = returnMatch(regex);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch())
    {
    int n=m.Groups[0].Length;//匹配长度
    cut_str=cut_str.Substring(last_index,cut_str.Length-last_index);//去掉上次后的结果
    int k=cut_str.IndexOf(m.Groups[0].ToString());//当前位置
    string this_v=cut_str.Substring(k,n);//当前匹配的值
    string str3=cut_str.Substring(0,k+n);//当前得到的值
    //return_str+=str3.Replace(m.Groups[0].ToString(),Return_Item_Content(m.Groups[0].ToString()));
    return_str+=evn(str3,m);
    last_index=k+n;//记录当前匹配的位置


    }
    if(return_str!="")
    sDetail=return_str+cut_str.Substring(last_index,cut_str.Length-last_index);
    return sDetail;
    }
    }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告