RM1*_*358 12 arrays powershell
如何获得第一个到第二个的数组元素范围?例如
$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 ???
Run Code Online (Sandbox Code Playgroud)
我知道我可以做很长的事情,for($x=0;$x -lt $array.count;$x++)但我正在寻找方括号的快捷方式.
Rob*_*und 12
您只需要计算结束索引,如下所示:
$array[0..($array.length - 2)]
Run Code Online (Sandbox Code Playgroud)
请记住先检查您的数组中是否确实有两个以上的条目,否则您会发现自己在结果中出现了重复项.
这种副本的一个例子是:
@(1)[0..-1]
Run Code Online (Sandbox Code Playgroud)
其中,从单个数组中1给出以下输出
1
1
Run Code Online (Sandbox Code Playgroud)
js2*_*010 10
可能存在这样的情况:您正在处理列表,但您不知道长度。Select-object 有一个 -skiplast 参数。
(1,2,3,4,5 | select -skiplast 2)
1
2
3
Run Code Online (Sandbox Code Playgroud)
正如前面提到的,最好的解决方案是:
$array[0..($array.length - 2)]
您遇到的问题可以用PowerShell 中的表达式和范围运算符$array[0..-2]的性质来解释。如果您尝试在 PowerShell 中仅评估这一部分,您将看到结果将是一个从 0 到 -2 的数字数组。"0..-2""..""0..-2"
>> 0..-2
0
-1
-2
Run Code Online (Sandbox Code Playgroud)
当您尝试$array[0..-2]在 PowerShell 中执行操作时,这与执行$array[0,-1,-2]. 这就是为什么你得到的结果是 as1, 5, 4而不是1, 2, 3, 4。
一开始这可能有点违反直觉,特别是如果您有一些 Python 或 Ruby 背景,但在使用 PowerShell 时需要考虑到这一点。
| 归档时间: |
|
| 查看次数: |
24626 次 |
| 最近记录: |