代码之家  ›  专栏  ›  技术社区  ›  Andrew Bullock

如何在C语言中高效地搜索字符串并插入#

  •  1
  • Andrew Bullock  · 技术社区  · 14 年前

    我需要将一些文本注入到由ASP.NETMVC ViewResult。我已经扩展了ViewResult并重写了ExecuteResult方法,现在:

    this.View.Render(viewContext, context.HttpContext.Response.Output);
    

    我需要截取响应输出。

    我知道我可以做一些像:

    var builder = new StringBuilder();
    var writer = new StringWriter(builder);
    this.View.Render(viewContext, writer);
    
    // adjust builder
    
    context.HttpContext.Response.Write(builder);
    

    </body> (将接近字符串的结尾),然后插入一些文本。

    更新 TextWriter . 有没有办法避免 ToString()

    谢谢

    4 回复  |  直到 14 年前
        1
  •  1
  •   CodesInChaos    14 年前

    那怎么办 StringBuilder.Replace ?

    一个问题是它是区分大小写的。

        3
  •  0
  •   Richard J. Ross III    14 年前

    这里有一种方法:

    StringBuilder sb = new StringBuilder(theText);
    int idx = theText.IndexOf("<body>");
    sb.Insert(idx + "<body>".Length, textToInsert);
    theText = sb.ToString();
    

    这就消除了忘记拥有 "<body>" + textToInsert 零件(替换中),并清除代码:)

        4
  •  0
  •   Nicholas Mayne    14 年前
    string textToInsert = "Nick";
    string searchstring = "<body></body>";
    StringBuilder builder = new StringBuilder(searchstring);
    builder.Insert(searchstring.IndexOf("<body>", 0, StringComparison.InvariantCultureIgnoreCase).Length, textToInsert);
    

    这将输出Nick

    更新:这里有一种优化查询的方法 http://www.codeproject.com/KB/string/string_optimizations.aspx