我正在将文本文件的内容写入StringBuilder,然后我想使用正则表达式对StringBuilder中包含的文本执行许多查找/替换操作。
我遇到了一个问题,因为StringBuilder的替换功能无法接受正则表达式参数。
我可以在普通字符串上使用Regex.Replace,但是由于由于.net字符串是不可变的,因此需要在内存中创建该字符串的两个副本,因此我觉得这效率很低。
更新文字后,我计划将其写回到原始文件中。
解决我的问题的最好,最有效的方法是什么?
编辑
除了以下答案之外,我还发现了以下问题,这些问题也为我的问题提供了一些启示-
最佳答案
最好,最有效的解决方案是首先尝试最简单的方法:忘记StringBuilder
,而只需使用Regex.Replace
即可。然后找出它有多慢-可能很好。不要忘了在编译和非编译模式下都尝试使用正则表达式。
如果那还不够快,请考虑将StringBuilder
用于您可以简单表达的任何替换,然后将Regex.Replace
用于其余的替换。您可能还需要考虑尝试合并替换项,以减少使用的正则表达式(从而减少中间字符串)的数量。
关于c# - StringBuilder中的正则表达式替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3504850/