首页 > 解决方案 > 从数组中删除重复元素,忽略空格

问题描述

我尝试了几种方法从字符串数组中删除重复元素,但它们都没有做我想要的。这是2个字符串:

CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/NOSPACE//

CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/无空格//

我希望只保留其中一个,因为它们从数组 a 复制到数组 b。不管是哪一个。

我尝试过 IEnumerable、HashSet 和 Distinct。他们每个人都返回两个字符串。(我的一个错误重复了第二个字符串。对不起。为了清楚起见,我希望比较忽略空格。)

IEnumerable<string> b = a.AsQueryable().Distinct(StringComparer.InvariantCulture);

HashSet<string> set = new HashSet<string>(a);
string[] b = new string[set.Count];
set.CopyTo(b);

string[] b = a.Distinct().ToArray();

标签: c#string

解决方案


第一个元素与其他元素不同,因此 distinct 将不起作用,您必须替换空格字符。

string[] a = { "CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/NOSPACE//", "CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/NO SPACE//", "CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/NO SPACE//" };
string[] b = a.Select(p => p.Replace(" ", "")).Distinct().ToArray(); //Replace 

输出:

"CNTY/013121/261538/Y/Y/Y/Y/Y/Y/C/NOSPACE//",

推荐阅读