c#中的JavaScript拼接

本文关键字:拼接 JavaScript 中的 | 更新日期: 2024-09-24 07:34:04

c#是否有类似于JavaScript中splice的方法?

我只知道RemoveRange,这不会返回删除的元素:

List<string> t = new List<string>();
t.RemoveRange(..., ...);

(我想避免写自己的作品集)。

c#中的JavaScript拼接

没有精确的等价物,但你可以写一个:

public static List<T> Splice<T>(this List<T> source,int index,int count)
{
    var items = source.GetRange(index, count);
    source.RemoveRange(index,count);
    return items;
}

如果拼接的元素数量大于列表中的元素数量,则GetRange()将抛出异常。更好的解决方案是:

    public static class ListExtension
    {
      public static List<T> Splice<T>(this List<T> source, int start, int size)
      {
          var items = source.Skip(start).Take(size).ToList<T>(); 
          if (source.Count >= size)
              source.RemoveRange(start, size);
          else 
              source.Clear();
          return items;
      }
    }

由于C#8,您可以使用C#范围。

int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
int[] subArray1 = someArray[0..2];               // { 1, 2 }
int[] subArray2 = someArray[1..^0];              // { 2, 3, 4, 5 }