多字符串替换性能

时间:2014-05-16 05:08:46

标签: c#

我正在使用C#开发Web应用程序。我想替换字符串中的多个字符。 例如,

string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz";
str = str.Replace("_","-");
str = str.Replace("|",", ");
str = str.Replace(":",". ");

OR

string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz";
str = str.Replace("_","-").Replace("|",", ").Replace(":",". ");

以上是示例编码,实际上我想替换更多字符。以上两个代码中是否存在与性能相关的问题?

这可能是一个重复的问题,我搜索了这个,但我没有找到...

由于

1 个答案:

答案 0 :(得分:1)

您提供的两个示例彼此相同。

现在,字符串替换通常完全取决于您的用例。例如,这不会是一个很大的性能影响:

string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz";
str = str.Replace("_","-").Replace("|",", ").Replace(":",". ");

......但这将是:

for (var i = 0; i < 100000; i++) {
    string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz";
    str = str.Replace("_","-").Replace("|",", ").Replace(":",". ");
}

如果后一种类型的操作是您所追求的,我建议使用StringBuilder,因为它将直接修改其内部结构(而不​​是不可变的字符串):

var sb = new StringBuilder(str);

...以及来自那里的Replace次来电。

或者,如果仍然没有为您提供所需的性能,您可以随时查看unsafe代码..但这需要完全不同的能量和理解。