string.Replace或stringBuilder.Replace()

时间:2013-09-27 07:08:05

标签: c# string stringbuilder

我是C#的新手,所以请原谅我的错误。

每次调用那段代码时,我想替换字符串的某些部分(每次调用2-4次)。 我想知道哪种方法在性能方面更好用:string.ReplacestringBuilder.Replace()

如果这段代码被同时调用10.000次怎么办?

3 个答案:

答案 0 :(得分:3)

找出哪一个更快的最佳方法是针对您的特定问题进行基准测试 - 编写一个简单的测试工具并为两个选项计时。

话虽如此 - C#字符串是immutable,这意味着您无法在创建它们后对其进行更改。当您调用String.Replace时,运行时必须为结果创建一个新的String实例。这意味着对同一个字符串的一系列更改将会很慢,因为运行时必须为每个操作创建一个新对象,每次都分配内存并复制字符串数据。

StringBuilder专门设计为此类情况的可变字符串 - 避免在每次操作时创建新的String实例。

如果你在同一个字符串上执行一系列StringBuilder调用,那么Replace几乎肯定会更快。

答案 1 :(得分:2)

在您的字符串生成后使用String.Replace(),它将立即替换所有位置。 如果你用一些例子来解释你的场景,那会更好。

请看这个链接,它有一个很好的描述:Comparing RegEx.Replace, String.Replace and StringBuilder.Replace – Which has better performance?

答案 2 :(得分:0)

String替换与StringBuilder替换不同。但从表面上看它们是一样的。 StringBuilder纯粹是一种优化,但考虑到字符串使用的普遍性,它是至关重要的。String.Replace总是创建一个新字符串 - StringBuilder.Replace不会。