如何删除2个数字之间的所有数组元素? 例如:数组是{2,6,3,6,8,2,7,2} 用户写两个数字,比方说2和4。 这导致程序删除第2和第4位之间的每个数组元素。 在这种情况下,它删除:3,6,8
答案 0 :(得分:2)
您无法从阵列中删除项目。但是您可以创建一个仅包含要保留的项目的新数组。在您的情况下,您可以使用以下内容:
int[] array = {2, 6, 3, 6, 8, 2, 7, 2};
array = array.Where((_, i) => i < 2 || i > 4).ToArray();
顺便说一句,如果你使用List而不是数组,那么你可以删除项目。请考虑以下示例:
List<int> list = new List<int>() {2, 6, 3, 6, 8, 2, 7, 2};
for(int i = 4; i >= 2 ; i--)
{
list.RemoveAt(i);
}
答案 1 :(得分:1)
对于列表,您可以使用RemoveRange
来完成该操作。只需要传递要删除的元素数而不是(包含)结束索引。因此,对于包含性索引start
和end
,它看起来像这样:
list.RemoveRange(start, end - start + 1);
对于数组,一旦创建的数组具有固定大小,就无法真正做到这一点。如果您确实需要一个数组,可以从数组中创建一个列表,删除这些项,然后使用ToArray
再次创建一个数组。
答案 2 :(得分:0)
作为Yacoub Massad mentioned in his answer:您无法从数组中删除项目。但是您可以创建一个仅包含要保留的项目的新数组。在这种情况下,我会使用linq,它非常简单:
int[] array = {2, 6, 3, 6, 8, 2, 7, 2};
int x = 2;
int y = 4;
var array1 = array.ToList()
.Take(x).Concat(array.ToList().Skip(x+y-1))
.ToArray();
foreach(var i in array1)
{
Console.Write(i);
Console.Write(',');
}
结果:
2,6,2,7,2,