C#中删除数组中任意位置的元素

您所在的位置:网站首页 c语言删除数组指定元素 C#中删除数组中任意位置的元素

C#中删除数组中任意位置的元素

2024-06-11 15:34| 来源: 网络整理| 查看: 265

目录

1、不改变长度的情况下从数组的指定索引处删除指定长度的元素

2、改变长度的情况下从数组的指定索引处删除指定长度的元素

        删除数组元数主要有两种情况:一是在不改变数组元素总数的情况下删除指定元素(也就是用删除元素后面的元素覆盖要删除的元素);二是删除指定元素后,根据删除元素的个数n,使删除后的数组长度减n。

1、不改变长度的情况下从数组的指定索引处删除指定长度的元素 //删除数组中任意位置开始元素 //不改变数组元素总数的情况下删除指定元素(也就是用删除元素后面的元素覆盖要删除的元素) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DelArrayNo { class Program { /// /// 删除数组中的元素 /// /// 要从中删除元素的数组 /// 删除索引 /// 删除的长度 static void DeleteArray(string[] ArrayBorn, int Index, int Len) { if (Len = ArrayBorn.Length) //否则,如果输入的实参(Index + Len)超过原数组长度 Len = ArrayBorn.Length - Index - 1; //则修改预删除长度为原数组长度-Index实参-1; int i /*= 0*/; //定义一个int变量,用来标识开始遍历的位置,IDE0059 for (i = 0; i < ArrayBorn.Length - Index - Len; i++) //遍历删除的长度 ArrayBorn[i + Index] = ArrayBorn[i + Len + Index]; //覆盖要删除的值 for (int j = (ArrayBorn.Length - 1); j > (ArrayBorn.Length - Len - 1); j--) //遍历新数组 ArrayBorn[j] = null ?? string.Empty; //设置数组为空,CS8625 } static void Main(string[] args) { if (args is null) //解除IDE0060 { throw new ArgumentNullException(nameof(args)); } string[] ArrayStr = new string[] { "m", "r", "s", "o", "f", "t" }; //声明一个字符串数组 Console.WriteLine("源数组:"); foreach (string i in ArrayStr) //遍历源数组 Console.Write(i+" "); //输出数组中的元素 Console.WriteLine(); DeleteArray(ArrayStr, 0, 1); //删除数组中位置=0开始的元素,1个 Console.WriteLine("删除元素后的数组:"); foreach (string i in ArrayStr) //遍历删除元素后的数组 Console.Write(i+" "); //输出数组中的元素 Console.WriteLine(); DeleteArray(ArrayStr, 0, 3); //删除数组中位置=开始的元素,3个 Console.WriteLine("删除元素后的数组:"); foreach (string i in ArrayStr) //遍历删除元素后的数组 Console.Write(i + " "); //输出数组中的元素 Console.ReadLine(); } } } /*运行结果: 源数组: m r s o f t 删除元素后的数组: r s o f t 删除元素后的数组: f t */ 2、改变长度的情况下从数组的指定索引处删除指定长度的元素 //删除指定元素后,根据删除元素的个数n,使删除后的数组长度减n。 //自定义方法ret_DeleteArray在删除元素或指定区域的元素后,改变数组的长度 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DelArrayYes { class Program { /// /// 删除数组中的元素,并改变数组的长度 /// /// 要从中删除元素的数组 /// 删除索引 /// 删除的长度 /// 得到的新数组 static string[] DeleteArray(string[] ArrayBorn, int Index, int Len) { if (Len = ArrayBorn.Length) //否则,如果输入的实参(Index + Len)超过原数组长度 Len = ArrayBorn.Length - Index - 1; //则修改预删除长度为原数组长度-Index实参-1; string[] temArray = new string[ArrayBorn.Length - Len];//声明一个新的数组,大小=剩余长度 for (int i = 0; i < temArray.Length; i++) //遍历新数组 { if (i >= Index) //如果循环变量i在输入的实参删除位置Index之后 temArray[i] = ArrayBorn[i + Len]; //则新数组元素=原数组(同一索引位置+删除长度)的值 else temArray[i] = ArrayBorn[i]; //否则,输入的删除位置实参Index之前的新数组元素=原数组同一索引位置的值 } return temArray; //返回得到的新数组 } static void Main(string[] args) { if (args is null) //解除IDE0060 { throw new ArgumentNullException(nameof(args)); } string[] ArrayStr = new string[] { "m", "r", "s", "o", "f", "t" };//声明一个字符串数组 Console.WriteLine("源数组:"); foreach (string i in ArrayStr) //遍历源数组 Console.Write(i + " "); //输出数组中的元素 Console.WriteLine(); string[] newArray = DeleteArray(ArrayStr, 0, 1);//调用方法并不改变原数组,在0位置删除数组中的元素1个 Console.WriteLine("删除元素后的数组:"); foreach (string i in newArray) //遍历删除元素后的数组 Console.Write(i + " "); //输出数组中的元素 Console.WriteLine(); newArray = DeleteArray(ArrayStr, 0, 3); //调用方法,在0位置删除数组中的元素3个 Console.WriteLine("删除元素后的数组:"); foreach (string i in newArray) //遍历删除元素后的数组 Console.Write(i + " "); //输出数组中的元素 Console.ReadLine(); } } } /*运行结果: 源数组: m r s o f t 删除元素后的数组: r s o f t 删除元素后的数组: o f t */



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3