如何获得从第一个到倒数第二个的数组元素范围?
例如,
$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 ???
我知道我可以做长手和go for($x=0;$x -lt $array.count;$x++)
,但我正在寻找方括号的捷径。
发布于 2014-05-02 01:24:29
您只需要计算结束索引,如下所示:
$array[0..($array.length - 2)]
请记住,首先要检查数组中是否有两个以上的条目,否则您会发现结果中存在重复项。
这样的副本的一个例子是:
@(1)[0..-1]
从一个由单个1
组成的数组中,它会给出以下输出
1
1
发布于 2019-03-16 18:51:10
如前所述,这里的最佳解决方案是:$array[0..($array.length - 2)]
您在$array[0..-2]
中遇到的问题可以用"0..-2"
表达式的性质和PowerShell中的范围运算符".."
来解释。如果您尝试在PowerShell中仅计算这部分"0..-2"
,您将看到结果将是一个从0到-2的数字数组。
>> 0..-2
0
-1
-2
当你尝试用PowerShell做$array[0..-2]
的时候,它和你做$array[0,-1,-2]
是一样的。这就是为什么你得到的结果是1, 5, 4
而不是1, 2, 3, 4
。
这一开始可能有点违反直觉,特别是如果你有一些Python或Ruby的背景,但你在使用PowerShell时需要考虑到这一点。
发布于 2019-09-24 08:22:27
可能会有这样一种情况:您正在处理一个列表,但您不知道长度。Select-对象有一个-skiplast参数。
(1,2,3,4,5 | select -skiplast 2)
1
2
3
https://stackoverflow.com/questions/23400410
复制相似问题