2011-08-08 5 views

答えて

4

です項目、その後、すべての休息を取る、簡単なオプションは、LINQの拡張メソッドを使用することです:

Dim sub = arr.Take(1).Concat(arr.Skip(2)).ToArray() 

それは

を生み出します210
  • {"one"}arr.Take(1)
  • 新しいアレイ(ToArray()

に(Concat

  • {"three"}arr.Skip(2)
  • と連結ドキュメント:

  • 0

    Array.Copyメソッドを使用できます。あなたの配列からどのように要素を選んでいるのかわかりません。無作為に選んでいるのですか他の方法ですか?しかし、私はあなたが2番目の配列を作成し、Copyメソッドを使用する必要があると思います。

    Copyメソッドは、さまざまな方法で使用できます。上で示したリンクは、最初の配列の指定されたインデックスから要素を取り出し、2番目の配列の指定されたインデックスにコピーすることです。ここで

    は、C#での例です:

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

    VB.NETの例はここにある:あなたのケースでは

    Arrays: Copy vs. Clone

    、あなたはAにArray.Copyを置くことができますソースと目的地のインデックスを変更しないでください。あなたが最初の項目を取りたい場合は、1をスキップし、一般的なケースでは

    Dim sub = {arr(0), arr(2)} 
    

    :この特定のケースでは、最も簡単なオプションは、単にコピーしたい二つのアイテムを一覧表示する

    0

    それはあなたが正確に欲しいものを見るために少し難しいですが、このような何かが動作します。あなたはこのような頻繁な変更を加えたい場合は

    Dim arr() As String = {"one","two","three"} 
    
    Dim templist As New List(Of String)(arr) 
    templist.RemoveAt(1) 
    Dim sub() As String = templist.ToArray() 
    

    個人的に、私はListではなくString()を使用しているはずです。


    EDIT:あなたは、単一の要素のためにこれを呼び出すことができます

    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) 
    

    かなど、多くの要素を好きなように:

    は、以下のRPKのコメントを考えます
    ' 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) 
    

    注、これは遅いのコードですが、それは読んで維持するためにあなたのコードをより簡単にすることができます。

    関連する問題