C# 操纵字符串问题

C# 操纵字符串问题,c#,asp.net,C#,Asp.net,如果我有一个字符串变量,其值如下:- string mystring = "TYPE1, TYPE1, TYPE2, TYPE2, TYPE3, TYPE3, TYPE4, TYPE4"; 我想操纵这个字符串,使其如下所示:- string mystring = "TYPE1,TYPE2,TYPE3,TYPE4"; 我想把里面的所有副本都去掉,我该怎么做 请帮忙。谢谢。好吧,这里有一个LINQ方法: string deduped = string.Join(",", original.Spl

如果我有一个字符串变量,其值如下:-

string mystring = "TYPE1, TYPE1, TYPE2, TYPE2, TYPE3, TYPE3, TYPE4, TYPE4";
我想操纵这个字符串,使其如下所示:-

string mystring = "TYPE1,TYPE2,TYPE3,TYPE4";
我想把里面的所有副本都去掉,我该怎么做


请帮忙。谢谢。

好吧,这里有一个LINQ方法:

string deduped = string.Join(",", original.Split(',')
                                          .Select(x => x.Trim())
                                          .Distinct());
请注意,我使用的是
Trim
,因为原始字符串在每个项之前都有一个空格,但结果却没有

Distinct()
实际上并不能保证保留顺序,但当前的实现是这样做的,这也是最自然的实现。我觉得很难想象它会改变

如果您使用的是.NET 3.5,则需要在
Distinct()
之后调用
.ToArray()
,因为在.NET 4之前有较少的
字符串。Join
重载。

string mystring = "TYPE1, TYPE1, TYPE2, TYPE2, TYPE3, TYPE3, TYPE4, TYPE4";

var split = mystring.Split(',');
var distinct = (from s in split select s).Distinct();
点菜?
如果需要,您还可以在行中添加
OrderBy()
,对字符串进行排序。

您可以执行以下操作:

var parts = mystring.Split(',').Select(s => s.Trim()).Distinct().ToList();
string newString = String.Join(",", parts);

我个人倾向于Jon Skeet的答案中的Linq选项,所以我也对它投了更高的票,但只是给你另一个选项

List<string> parts = new List<String>();
foreach(string split in mystring.Split(','))
    if(!parts.Contains(split))
        parts.Add(split);

string newstr = "";
foreach(string part in parts)
    newstr += part + ",";
List parts=new List();
foreach(mystring.split(',')中的字符串拆分)
如果(!parts.Contains(拆分))
部分。添加(拆分);
字符串newstr=“”;
foreach(部分中的字符串部分)
newstr+=部分+“,”;

这也适用于旧版本的C#。

您使用的是哪个.net版本?我尝试了您的版本,结果是“TYPE1,TYPE1,TYPE2,TYPE3,TYPE4”。为什么Type1出现两次?这是因为第一个TYPE1前面有空格,而第二个没有空格。我修正了代码,现在应该可以用了。谢谢。现在可以用了,但是有一个问题。结尾有个逗号。如何删除?刚刚尝试过,结尾没有逗号。我使用了您在问题中发布的mystring的定义。请出示你的密码,我自己已经整理好了。谢谢:)在本例中,您可能应该使用
HashSet
StringBuilder
。我只是给出了另一个选项。如果您还有其他问题,请将其作为答案提交。
List<string> parts = new List<String>();
foreach(string split in mystring.Split(','))
    if(!parts.Contains(split))
        parts.Add(split);

string newstr = "";
foreach(string part in parts)
    newstr += part + ",";