删除或替换,当我从字符串中删除子字符串时哪一个更好?

时间:2013-09-16 20:30:28

标签: c# string

我需要从字符串中删除所有出现的子字符串。我可以使用删除或替换,哪一个更好?

4 个答案:

答案 0 :(得分:6)

  

我需要从字符串中删除所有出现的子字符串。

鉴于您需要删除所有出现次数,Replace肯定会是更好的选择。 Remove需要多次调用,每次都找到位置(传递适当的索引和长度以便删除),这意味着你要创建许多临时字符串。这将需要更多的工作,并在垃圾收集器上进行额外的工作来清理你生成的临时字符串。

答案 1 :(得分:2)

Remove不会删除特定子字符串的所有实例(当然,除非您首先执行查找所有索引的工作)。只有Replace才会这样做。

答案 2 :(得分:0)

删除将需要获取要删除的字符串的索引,并且每次只删除一次,而替换将需要知道要替换的字符串,因此在编写它时,替换更简单:

string foo = "bar";
string result;
result = foo.Remove(foo.IndexOf("a"));//you will have to repeat that for each instance

string foo = "bar";
string result;
result = foo.Replace("a","");

答案 3 :(得分:0)

Replace()用于替换所有出现的字符串。 Remove()可以被认为是向后的Substring(),你丢弃传递的字符串并保留其余部分。