Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多字符串替换性能_C# - Fatal编程技术网

C# 多字符串替换性能

C# 多字符串替换性能,c#,C#,我正在使用C#开发web应用程序。我想替换字符串中的多个字符。 比如说, string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz"; str = str.Replace("_","-"); str = str.Replace("|",", "); str = str.Replace(":",". "); 或 以上是示例编码,实际上我想替换更多字符。上述两个代码中是否存在任何与性能相关的问题 这可能是一个重复的问题,我搜索过,但我没有找到 谢谢您提供的两

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

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

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

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


谢谢

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

现在,字符串替换通常完全取决于您的用例。例如,这不会对性能造成太大影响:

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(":",". ");
}
…并从那里链接
替换
调用


或者,如果这仍然不能为您提供所需的性能,您可以随时查看
不安全的
代码。。但是这需要完全不同的精力和理解水平。

我发现类似的问题是关于
String.Replace()的性能请检查这一个:这两个示例应该具有几乎相同的性能。在一个表达式中编写三个方法调用不会改变这样一个事实,即您正在扫描字符串三次,并创建可立即进行垃圾收集的临时字符串实例。感谢链接。。
for (var i = 0; i < 100000; i++) {
    string str = "abc_def|ghij_klmn:opq|rst:uv_wx|yz";
    str = str.Replace("_","-").Replace("|",", ").Replace(":",". ");
}
var sb = new StringBuilder(str);