私が持っている:VB.NETでより大きな配列からサブアレイを取得するには?
Dim arr() As String = {"one","two","three"}
私は{ "1"、 "3"}含む新しい配列、sub
を、したいです。これを行う最善の方法は何ですか?
私が持っている:VB.NETでより大きな配列からサブアレイを取得するには?
Dim arr() As String = {"one","two","three"}
私は{ "1"、 "3"}含む新しい配列、sub
を、したいです。これを行う最善の方法は何ですか?
です項目、その後、すべての休息を取る、簡単なオプションは、LINQの拡張メソッドを使用することです:
Dim sub = arr.Take(1).Concat(arr.Skip(2)).ToArray()
それは
を生み出します210{"one"}
(arr.Take(1)
)ToArray()
)に(Concat
)
{"three"}
(arr.Skip(2)
)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の例はここにある:あなたのケースでは
、あなたはAにArray.Copyを置くことができますソースと目的地のインデックスを変更しないでください。あなたが最初の項目を取りたい場合は、1をスキップし、一般的なケースでは
Dim sub = {arr(0), arr(2)}
:この特定のケースでは、最も簡単なオプションは、単にコピーしたい二つのアイテムを一覧表示する
それはあなたが正確に欲しいものを見るために少し難しいですが、このような何かが動作します。あなたはこのような頻繁な変更を加えたい場合は
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)
注、これは遅いのコードですが、それは読んで維持するためにあなたのコードをより簡単にすることができます。