我正在使用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(":",". ");
以上是示例编码,实际上我想替换更多字符。以上两个代码中是否存在与性能相关的问题?
这可能是一个重复的问题,我搜索了这个,但我没有找到...
由于
答案 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
代码..但这需要完全不同的能量和理解。