【发布时间】:2016-11-29 05:50:06
【问题描述】:
如果您必须对每个匹配项执行一些逻辑以生成替换值,我很难决定使用哪一个,要么使用Regex.Replace,要么使用Regex.Matches。
场景:读取文件(大小可能不同),然后使用正则表达式替换匹配项。每个匹配的替换值是不同的,并且是由某些逻辑生成的。
方法一:阅读完整文件,然后找到所有匹配项,然后我执行 foreach 或 for 循环并一一替换。
方法2:读取完整文件,然后使用带有MatchEvaluator的Regex.Replace方法,其中MatchEvaluator函数执行逻辑并返回替换值。
有一篇文章我想在这里链接,不知何故让我有一种不使用的感觉,Regex.Replace。链接:https://blogs.msdn.microsoft.com/debuggingtoolbox/2008/04/02/comparing-regex-replace-string-replace-and-stringbuilder-replace-which-has-better-performance/
【问题讨论】:
-
如果您有性能问题,您应该针对您的独特问题实施自己的解决方案。所有字符串函数都适用于所有情况。例如,如果您只有小写字符,那么您可以实现更好的搜索 - 替换算法,然后为您的案例其他任何人。
-
如果您的文件小于 1Gb,请不要担心性能(Regex.Replace 和 Regex.Matches 之间的任何收益都将是微乎其微的)。只需采用您认为更容易实施的方法即可。