c# - 在 C# 中执行替换之前执行检查的效率更高还是更低?

标签 c# text replace

这几乎是一个学术问题,但我很好奇它的答案。

假设您有一个循环对数据集中的每一行执行例行替换。假设有 10,000 个这样的行。

这样的东西是不是更有效率:

 Row = Row.Replace('X', 'Y');

或者首先检查该行是否包含要替换的字符,如下所示:

 if (Row.Contains('X')) Row = Row.Replace('X', 'Y');

在效率上有什么区别吗?我意识到差异可能非常小,我有兴趣知道一种方法是否比另一种更好,而不管它可能好多少。此外,如果找到要替换的字符的概率为 10% 与 90%,您的答案会有所不同吗?

最佳答案

对于您的检查,Row.Contains('X') 是一个 O(n) 函数,这意味着它一次遍历整个字符串一个字符以查看该字符是否存在。

Row.Replace('X', 'Y') 的工作方式完全相同,它一次检查每个字符一个字符。

因此,如果您进行了该检查,则可能会对该字符串进行两次迭代。如果您只是替换,您将遍历字符串一次。

关于c# - 在 C# 中执行替换之前执行检查的效率更高还是更低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709022/

相关文章:

php - 用异常(exception)替换重复字符

c# - 检查共享文件夹是否在 vb.net 中受密码保护

c# - 在 C# 中使用抽象类的困惑

java - 文本文件错误扫描仪

HTML 单行文本,如果超过一行则附加 "..."?

c++ - 代码编辑器皮肤?

javascript替换第一个/最后一个字母并将中间文本包含在标签中

c# - CSV-Helper 无法转换 bool 值时出现问题

C# 批量复制到 SQL 表类型问题

regex - Intellij 想法 : how to put dollar sign to the replaced content