从逗号分隔的列表中删除重复项

Jan*_*ora 2 c#

我用C#编写了以下程序,以删除字符串中的重复元素。但是,该程序无法删除逗号分隔的字符串中的重复元素。有人可以帮助我如何从逗号分隔列表中删除以下代码中的重复项(如48375)。

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()));
    }
}
Run Code Online (Sandbox Code Playgroud)

Cai*_*ard 7

C#正常运行-您在输出中看到的两个48375确实是不同的(唯一)字符串。

您的第一个48375 "48375 "在结尾处有一个空格,而下一个48375 " 48375 "在开头和结尾处有一个空格。对于C#,这是完全不同的东西

有几种简单的方法可以解决此问题,但这绝不是详尽的清单:

  • 开始之前请删除所有空格,
  • 也拆分空格(删除空条目)或
  • 修剪每个项目的空间

以下是代码中的代码:

string.Join(" , ", inf.Replace(" ", "").Split(',').Distinct())

string.Join(" , ", inf.Split(new[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries).Distinct())

string.Join(" , ", inf.Split(',').Select(e => e.Trim()).Distinct())
Run Code Online (Sandbox Code Playgroud)

通常,你不需要做既ToList()和ToArray()-选择一种或另一种取决于你是否打算进行更多的操作,如添加/删除项目(使用ToList()),或者只是有数据作为一个简单的数组对于一些只读访问(使用ToArray())。

在这种情况下,你甚至都不需要做任何- string.Join可在工作IEnumerable<string>是Distinct()回报