【问题标题】:Split array from a given range [duplicate]从给定范围拆分数组[重复]
【发布时间】:2017-04-19 08:35:43
【问题描述】:

从给定范围拆分数组的 C# 代码是什么。 例如:

int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}

我想将arr 拆分为两个数组。一个从第 0 到第 5 个索引,另一个从第 6 到第 20 个索引。

在 Java 中,Arrays.copyOfRange() 可用于此过程。这个 C# 代码是什么?

【问题讨论】:

  • arr.Take(5).ToArray()arr.Skip(5).ToArray()
  • 因为这是重复的,我已经在那里回答了:stackoverflow.com/a/43491049/284240 通常Array.Copy 比枚举数组更有效,直到您位于给定索引处并使用ToArray 创建一个新数组。对于小型阵列,这是微优化。但是由于丑陋的Array.Copy 隐藏在扩展方法中,因此您无需关心可读代码。

标签: c# arrays split


【解决方案1】:

尝试使用 Linq

 using System.Linq;

 ...

 int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

 int[] head = arr.Take(5).ToArray();
 int[] tail = arr.Skip(5).ToArray();

【讨论】:

  • 谢谢,如果我想从索引 5 到索引 10 获取元素并创建一个新数组怎么办。有没有直接的方法。
  • @ANJ:要从索引 5 到 10 获取项目,只需组合 SkipTakeint[] middle = arr.Skip(5).Take(5).ToArray();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
相关资源
最近更新 更多