我用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)
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()回报
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |