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

本文关键字:字符串 删除 更好 替换 | 更新日期: 2023-09-27 18:31:35

我需要从字符串中删除子字符串的所有出现。我可以用Remove() Replace(),哪个更好?

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

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

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

Remove不会

删除特定子字符串的所有实例(当然,除非您先查找所有索引)。只有Replace才能做到这一点。

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

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

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","");