发布
社区首页 >问答首页 >PowerShell中从第一个到倒数第二个的数组索引

PowerShell中从第一个到倒数第二个的数组索引
EN

Stack Overflow用户
提问于 2014-05-01 08:40:45
回答 3查看 42.2K关注 0票数 17

如何获得从第一个到倒数第二个的数组元素范围?

例如,

代码语言:javascript
代码运行次数:0
复制
$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++),但我正在寻找方括号的捷径。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-02 01:24:29

您只需要计算结束索引,如下所示:

代码语言:javascript
代码运行次数:0
复制
$array[0..($array.length - 2)]

请记住,首先要检查数组中是否有两个以上的条目,否则您会发现结果中存在重复项。

这样的副本的一个例子是:

代码语言:javascript
代码运行次数:0
复制
@(1)[0..-1]

从一个由单个1组成的数组中,它会给出以下输出

代码语言:javascript
代码运行次数:0
复制
1 
1
票数 19
EN

Stack Overflow用户

发布于 2019-03-16 18:51:10

如前所述,这里的最佳解决方案是:$array[0..($array.length - 2)]

您在$array[0..-2]中遇到的问题可以用"0..-2"表达式的性质和PowerShell中的范围运算符".."来解释。如果您尝试在PowerShell中仅计算这部分"0..-2",您将看到结果将是一个从0到-2的数字数组。

代码语言:javascript
代码运行次数:0
复制
>> 0..-2
0
-1
-2

当你尝试用PowerShell做$array[0..-2]的时候,它和你做$array[0,-1,-2]是一样的。这就是为什么你得到的结果是1, 5, 4而不是1, 2, 3, 4

这一开始可能有点违反直觉,特别是如果你有一些Python或Ruby的背景,但你在使用PowerShell时需要考虑到这一点。

票数 4
EN

Stack Overflow用户

发布于 2019-09-24 08:22:27

可能会有这样一种情况:您正在处理一个列表,但您不知道长度。Select-对象有一个-skiplast参数。

代码语言:javascript
代码运行次数:0
复制
(1,2,3,4,5 | select -skiplast 2)

1
2
3
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23400410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档