在C#中删除字符串中的重复子字符串

Jos*_*osh 5 c#

如何删除字符串中的重复子字符串?所以,例如,如果我有一个像那样的smith:rodgers:someone:smith:white字符串,我怎么能得到一个额外smith删除的新字符串smith:rodgers:someone:white.即使它们是重复的,我也想保留冒号.

非常感谢

Tho*_*que 21

string input = "smith:rodgers:someone:smith:white";
string output = string.Join(":", input.Split(':').Distinct().ToArray());
Run Code Online (Sandbox Code Playgroud)

当然,此代码假定您只查找重复的"字段"值.这不会删除以下字符串中的"smithsmith":

"smith:rodgers:someone:smithsmith:white"
Run Code Online (Sandbox Code Playgroud)

有可能编写一个算法来做到这一点,但很难使它高效...

  • 如果您使用的是.NET4,请不要忘记您可以省略`ToArray`调用. (3认同)
  • @Odrade:在.Net 4中,string.Join被重载以接受`IEnumerable <string>`.在.Net 3.5及更早版本中,它不是.请参阅http://msdn.microsoft.com/en-us/library/system.string.join.aspx. (2认同)

Cal*_*ebD 8

像这样的东西:

string withoutDuplicates = String.Join(":", myString.Split(':').Distinct().ToArray());
Run Code Online (Sandbox Code Playgroud)