我正在将文本文件的内容写入StringBuilder,然后我想使用正则表达式对StringBuilder中包含的文本执行许多查找/替换操作。

我遇到了一个问题,因为StringBuilder的替换功能无法接受正则表达式参数。

我可以在普通字符串上使用Regex.Replace,但是由于由于.net字符串是不可变的,因此需要在内存中创建该字符串的两个副本,因此我觉得这效率很低。

更新文字后,我计划将其写回到原始文件中。

解决我的问题的最好,最有效的方法是什么?

编辑

除了以下答案之外,我还发现了以下问题,这些问题也为我的问题提供了一些启示-

  • memory-efficiency-and-performance-of-string-replace-net-framework
  • is-stringbuilder-replace-more-efficient-than-string-replace
  • at-what-point-does-using-a-stringbuilder-become-insignificant-or-an-overhead
  • 最佳答案

    最好,最有效的解决方案是首先尝试最简单的方法:忘记StringBuilder,而只需使用Regex.Replace即可。然后找出它有多慢-可能很好。不要忘了在编译和非编译模式下都尝试使用正则表达式。

    如果那还不够快,请考虑将StringBuilder用于您可以简单表达的任何替换,然后将Regex.Replace用于其余的替换。您可能还需要考虑尝试合并替换项,以减少使用的正则表达式(从而减少中间字符串)的数量。

    关于c# - StringBuilder中的正则表达式替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3504850/

    10-16 14:22