StringBuilder.Replace()比String.Replace更有效吗?
如果必须使用String.Replace()替换50次测试,则必须创建一个新的字符串50次。 StringBuilder.Replace()是否更有效地执行此操作? 例如,如果我要替换大量文本,是否应该使用StringBuilder,即使我不会向其添加任何数据?
我使用的是.NET,但我认为这将与Java以及其他语言相同。
这正是StringBuilder所用的类型 - 对同一文本对象的重复修改 - 不仅仅是重复连接,尽管这似乎是最常用的。
这取决于替换的大小是否大于替换的字符串。
StringBuilder 将分配缓冲区 ,而一个字符串只能保存多少个字符。
StringBuilder.Capacity属性是缓冲区容纳的字符数,而StringBuilder.Length是使用了多少个字符。
通常你应该将StringBuilder.Capacity设置为一个大于预期结果字符串的值。 否则,StringBuilder将需要重新分配其缓冲区。 当StringBuilder重新分配它的缓冲区时,它的大小会加倍 ,这意味着在一对夫妇重新分配之后,它可能会大得多,那么它需要,默认情况下,容量从16开始。
通过在启动时设置Capacity值(例如在构造函数中),可以保存StringBuilder缓冲区的重新分配。 您可以使用StringBuilder.MaxCapacity来限制StringBuilder可以扩展到的最大容量。
是的。 String.Replace
总是创建一个新的字符串StringBuilder.Replace
不会。
上一篇: Is StringBuilder.Replace() more efficient than String.Replace?