关于C#中的字符串删除

时间:2011-10-23 00:57:20

标签: c# .net string

什么是正确的?

检查是否存在,然后删除?

var input = "foo #main baa"; 
if(input.Contains("#main")) {
   input = input.Replace("#main", "");
}

或只是:

input = input.Replace("#main", "");

嗯,这似乎是一个简单的问题,但我真的很想知道。 提前谢谢。

5 个答案:

答案 0 :(得分:4)

只做替换 - 如果不存在,则不会发生任何事情。

答案 1 :(得分:4)

Contains检查实际上只是让您的代码更慢 删除它。

Contains调用需要遍历字符串,直到找到#main 然后,Replace调用需要执行完全相同的循环(它无法从Contains调用中记住它。) 这是Shlemiel the Painter's algorithm

Replace可以处理搜索字符串出现次数为零或更多的字符串,因此您不需要检查。

答案 2 :(得分:1)

只需拨打Replace()。如果未找到子字符串,则不会发生任何事情,您可以避免再次调用Contains()

答案 3 :(得分:0)

我会这样做:

input = input.Replace("#main", "").Replace("  "," ");

删除任何双重空格。

答案 4 :(得分:0)

删除它。唯一要检查的是字符串是否为空。