C# 从逗号分隔的列表中删除重复项
我用C#编写了以下程序,以删除字符串中的重复元素。但是,此程序无法删除逗号分隔字符串中的重复元素。有人能帮我从逗号分隔的列表中删除下面代码中类似48375的重复项吗C# 从逗号分隔的列表中删除重复项,c#,C#,我用C#编写了以下程序,以删除字符串中的重复元素。但是,此程序无法删除逗号分隔字符串中的重复元素。有人能帮我从逗号分隔的列表中删除下面代码中类似48375的重复项吗 using System.IO; using System; using System.Linq; class Program { static void Main() { string inf = "48375 , 36143 , 66516 , 332674 , 107028 , 319546
using System.IO;
using System;
using System.Linq;
class Program
{
static void Main()
{
string inf = "48375 , 36143 , 66516 , 332674 , 107028 , 319546 , 362998 , 324285 , 110470 , 47870 , 17507 , 331420 , 59873 , 19531 , 107100 , 102487 , 97561 , 332674 , 322436 , 348305 , 44900 , 89921 , 41063 , 105962 , 319546 , 80476 , 363510 , 65760 , 344153 , 52328 , 51692 , 101922 , 359192 , 341859 , 37437 , 356670 , 37550 , 91952 , 349196 , 69361 , 52663 , 110705 , 48701 , 99730 , 343144 , 22001 , 66516 , 85782 , 362998 , 324285 , 16487 , 332329 , 352225 , 329868 , 36143 , 48375 , 97871";
Console.Out.WriteLine(string.Join(" , ", inf.Split(',').Distinct().ToList().ToArray()));
}
}
C#工作正常-您在输出中看到的两个48375确实是不同(唯一)的字符串
您的第一个48375是“48375”
,末尾有空格,下一个48375是“48375”
,开头和结尾都有空格。对C来说,这是完全不同的事情
有几种简单的方法可以解决这个问题,但这并不是一个详尽的列表:
- 拆分为
字符串,而不是,“
字符(必须使用大小为一个字符串的数组),”
- 在开始之前删除所有空格
- 也在空格上拆分(删除空条目)或
- 将每个项目的空格修剪掉
string.Join(" , ", inf.Split(new[] { " , " }).Distinct());
string.Join(" , ", inf.Replace(" ", "").Split(',').Distinct());
string.Join(" , ", inf.Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries).Distinct());
string.Join(" , ", inf.Split(',').Select(e => e.Trim()).Distinct());
通常,您不需要同时执行ToList()
和ToArray()
——根据您是否计划执行更多操作(如添加/删除项)(使用ToList()
)或仅将数据作为简单数组进行某种只读访问(使用ToArray()
)来选择其中之一
在这种情况下,您甚至不需要执行任何操作-
string.Join
可以处理IEnumerable
,该Distinct()
返回在Distinct op之前使用trim
Console.Out.WriteLine(string.Join(" , ", inf.Split(',').Select(o=>o.Trim()).Distinct().ToList().ToArray()));
请使用以下选项-
string uniqIds=string.Join(“,”,inf.Split(“,”).Select(o=>o.Trim()).ToList().Distinct()) 因为在第二个的两边都有空间。