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