2016-11-05 92 views
1

我想將一個數組的一部分複製到一個新的數組中,並尋找一個解決方案,但這些解決方案是編碼分配或不是我正在尋找。這可能是我在谷歌搜索錯誤,但很抱歉,如果這個答案很容易找到,我找不到它。如何將數組的一部分複製到新數組。 C#

我有數組A

string[] A = {"A", "B", "C", "D", "E", "F"};

我嘗試使用

string[] B = new string[2]; Array.Copy(A, 0, B, 0, 2)

複製到陣列B的它的部分,但此只是給數組A的固定部分背面所以陣列B由「A」和「B」組成。

是有也給陣列B值0,1,4,5,所以它給我「A」「B」「E」和「F」的方式

也對不起英文不好它是不是我的母語,我試圖在谷歌搜索:

我的第一次搜索的結果分配讓我到如何獲得二維數組,但這不是我所需要的頁面。 「如何將一個數組的2個部分複製到一個新的數組」導致我array.copy標記 之後,我試圖查找「array.copy手冊」,但只是讓我說它不能用數組.copy所以沒有人知道如何在一個緊湊的代碼中做到這一點?

再次。對不起,如果這個答案是明顯的。

+0

看看:http://stackoverflow.com/questions/733243/how-to-copy-part-of-an-array-to-another-array-in-c –

回答

3

是有也給陣列B值0,1,4,5,所以它給我 「A」 「B」 「E」 和 「F」

沒有一種方法,因爲B是一組string s。但是,您可以用獨立數組索引的開始,並根據他們從A複製:

int[] indexes = new[] {0, 1, 4, 5}; 
string[] B = indexes.Select(i => A[i]).ToArray(); 
+1

很好的解決方案。只有在綁定檢查時纔可能出錯。 'int [] = new [] {0,1,15};'可能是:'string [] B = indexes.Where(i => i A [i]) .ToArray();' –

+0

@JeroenvanLangen OP是構造索引數組的一個,所以觀察它的適當邊界。 – dasblinkenlight

+0

你的工作更專業,我現在剛剛找到了一個解決方案,但不好使用你的,並把它放在我的評論下,以供參考,謝謝。 –

1

的一種方法是:

var indices = new[] { 0, 1, 4, 5 }; 
var copy = A.Where((s, i) => indices.Contains(i)).ToArray(); 
+0

在這種情況下,最好使用HashSet的索引,而不是整數數組,因爲包含對數組不太快(每次都進行全搜索) –

+1

哈希集在使用5個項目時不是有用的,但是我會升級它,我不知道數字。 –

+0

當然,5項無關緊要。只是想到了一個更「通用」的情況下:) –

0

嗯,我只是去與我的代碼角落找尋booging和這個工程我想:

string[] A = {"A", "B", "C", "D", "E", "F"}; string[] B = new string[4]; Array.Copy(A, 0, B, 0, 2) Array.Copy(A, 4, B, 2, 2)

它給陣列B值ABE和F

+0

我幾乎不能相信你可以把4的值在一個長度爲3的數組:) :) –

+0

哦,對不起hihi它的作品,它必須是4虐待編輯它。 –

相關問題