我想从数组中删除重复项,而忽略空格,因此Distinct.ToArray()将不起作用。
我将数组复制到列表中,并使用嵌套循环向后枚举该数组。我将内部循环的数组项与外部循环的数组项进行比较。循环运行没有问题,但是当我从复制的列表中删除索引到内部循环的项目时,出现异常。
for (int k = aArray.Length - 1; k > 0 ; k--)
{
for ( int j = k -1; j >= 0; j--)
{
if (Regex.Replace(aArray[k], @"\s", "") ==
Regex.Replace(aArray[j], @"\s", ""))
{
aList.RemoveAt(j);
}
}
}
如何基于数组中的项目比较枚举数组并从该数组的副本中删除项目?谢谢。
编辑:给定三个字符串,一个包含NOSPACE,一个包含NO SPACE(1 sp),一个包含NO SPACE(2 sp),但除此之外,我想删除其中两个。没关系的两个。区分不起作用,因为它不会忽略空格,建议的答案将删除所有空格。
第二次编辑:Greg的答案确实有效,但我不能对此表示赞同(小于15)。我整天都在苦苦挣扎。...
第3次修改:Greg的答案有效,但删除了字符串中的所有空格。我要删除除空格以外相同的项目,并在项目中保留空格。我仍然认为枚举应该以某种方式起作用。
答案 0 :(得分:0)
尝试一下:
var result = aArray.Select(x => x.Replace(" ", string.Empty)).Distinct();
如果愿意,可以使用Regex.Replace(x, @"\s", "")
代替x.Replace
答案 1 :(得分:0)
var array = new[] { " 1 2 ", " 12 ", "1 ", " 1", "12", " 1 ", "3 3", " 33" };
var result = array
.ToLookup(k => k.Replace(" ", string.Empty))
.Select(v => v.First())
.ToArray();