2014-05-01 15 views
7

Sonuncu ile ikinci arasında dizi eleman aralığını nasıl alabilirim? , ör.powershell array dizini, ilk iki saniyeden sona doğru

$array = 1,2,3,4,5 
$array[0] - will give me the first (1) 
$array[-2] - will give me the second last (4) 
$array[0..2] - will give me first to third (1,2,3) 
$array[0..-2] - I'm expecting to get first to second last (1,2,3,4) but I get 1,5,4 ??? 

Ben uzun eli yapmak ve for($x=0;$x -lt $array.count;$x++) gidebilir biliyorum ama köşeli ayraç kısayol arıyordu.

+5

verir .. ($ Array.length-2)] '. –

+0

Robert'ın önerisi, maalesef bildiğim en iyi yoldur. Ben de beklediğim gibi davranmak için $ 0 [0 ..- 2] istedim. Ama hayır, geriye doğru endeksler 0 -> [len-1] -> [len - 2]. Bunun nasıl yararlı olduğunu hiç anlamıyorum. –

+0

@ robert.westerlund Bu soruyu kapatabilmek için yorumunuzu yanıt olarak eklemelisiniz :) –

cevap

5

Sadece çok gibi uç indeksini hesaplamak gerekir:

$array[0..($array.length - 2)] 

aslında ilk dizideki ikiden fazla girdilerine sahip etmediğini kontrol etmeyi unutmayın, aksi takdirde kendinizi çiftleri elde bulacaksınız sonuç.

böyle bir yinelenen bir örneği

olacaktır:

@(1)[0..-1] 

tek 1 bir diziden hangisi, aşağıdaki çıktı üretmesi Sen `$ dizi [0 yapabilsek

1 
1 
+0

Bunun için teşekkürler! Negatif indekslemeyi kullanabilmeniz ancak aralıklarda uygulanmadığı için utanç verici; doğal olmayan ve sinir bozucu. – AER