如何在VB.NET中从较大的数组中获取子数组?

如何在VB.NET中从较大的数组中获取子数组?,.net,vb.net,arrays,.net,Vb.net,Arrays,我有: 我想要一个新数组,sub,只包含{“一”,“三”}。执行此操作的最佳方法是什么?您可以使用此方法。我不知道你是如何从数组中选取元素的。你是随机挑选还是其他方式?但是我认为您需要创建第二个数组并使用Copy方法 您可以通过多种方式使用复制方法。我上面给出的链接是从第一个数组的指定索引中选取一个元素,并复制到第二个数组的指定索引中 下面是C#中的一个示例: 下面是一个VB.NET示例: 在您的情况下,您可以将Array.Copy放在一个循环中,并不断更改源和目标索引。对于这种特殊情况,最简

我有:

我想要一个新数组,
sub
,只包含{“一”,“三”}。执行此操作的最佳方法是什么?

您可以使用此方法。我不知道你是如何从数组中选取元素的。你是随机挑选还是其他方式?但是我认为您需要创建第二个数组并使用Copy方法

您可以通过多种方式使用复制方法。我上面给出的链接是从第一个数组的指定索引中选取一个元素,并复制到第二个数组的指定索引中

下面是C#中的一个示例:

下面是一个VB.NET示例:


在您的情况下,您可以将Array.Copy放在一个循环中,并不断更改源和目标索引。

对于这种特殊情况,最简单的选择就是列出要复制的两项:

string[] firstArray = {"dog","cat","fish","monkey"};
string[] secondArray = firstArray;
Array.Copy(firstArray,3,secondArray,0,1);
Console.WriteLine(secondArray[0].ToString());

在一般情况下,如果要获取第一项,请跳过一项,然后获取所有剩余项,一个简单的选项是使用LINQ扩展方法:

Dim sub = {arr(0), arr(2)}
它产生

  • {“一”}
    arr.Take(1)
  • 连接到(
    Concat
  • {“三”}
    arr.Skip(2)
  • 放入新数组(
    ToArray()
文件:


    • 要准确地了解您想要的东西有点困难,但类似的方法可以奏效

      Dim sub = arr.Take(1).Concat(arr.Skip(2)).ToArray()
      
      就我个人而言,如果您想经常进行这样的更改,我会使用
      List
      而不是
      String()


      编辑:考虑RPK的以下评论:

      Dim arr() As String = {"one","two","three"}
      
      Dim templist As New List(Of String)(arr)
      templist.RemoveAt(1)
      Dim sub() As String = templist.ToArray()
      
      您可以为单个元素调用它:

      Function RemoveElements(ByVal arr() As String, ByVal ParamArray skip() As Integer) As String()
          Dim templist As New List(Of String)(arr.Length - skip.Length)
          For i As Integer = 0 to templist.Length - 1
              if Array.IndexOf(skip, i) = -1 Then templist.Add(arr(i))
          Next i
          Return templist.ToArray()
      End Function
      
      或者使用任意数量的元素:

      ' Skips the second element.
      Dim sub() As String = RemoveElements(arr, 1)
      
      或使用数组:

      ' Skips the second, fourth, seventh and eleventh elements.
      Dim sub() As String = RemoveElements(arr, 1, 3, 6, 10)
      
      注意,这是一个缓慢的代码,但它可以使您的代码更易于阅读和维护

      ' Skips the second, fourth, seventh and eleventh elements.
      Dim sub() As String = RemoveElements(arr, 1, 3, 6, 10)
      
      ' Skips the second, fourth, seventh and eleventh elements.
      Dim skip() As Integer = {1, 3, 6, 10}
      Dim sub() As String = RemoveElements(arr, skip)