需要在 powershell 的 arraylist 中添加和查找元素索引值?
Need to add and find element index value in arraylist in powershell?
在数组列表中添加字符串元素并找到它的索引值?
[code...]
$eventList = New-Object System.Collections.ArrayList
$eventList.Add("Hello")
$eventList.Add("test")
$eventList.Add("hi")
不工作抛出错误:-
Method invocation failed because [System.String[]] doesn't contain a method named 'Add'.
At C:\Users\Administrator\Desktop\qwedqwe.ps1:9 char:15
+ $eventList.Add <<<< ("Hello")
+ CategoryInfo : InvalidOperation: (Add:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
如评论中所述,如果您是在 ISE(或另一个 IDE)中开发的,并且之前已为 $eventList
分配了类型转换,如下所示:
[string[]]$eventList = @()
或类似的,注释掉前面的行对您没有帮助 - 变量已经存在并且将在其剩余生命周期内绑定该类型。
您可以使用 Remove-Variable eventList
删除任何以前的分配
排序后,我们可以继续实际定位索引。如果您对完全匹配的索引感兴趣,请使用 IndexOf()
:
PS> $eventList.IndexOf('hi')
2
如果这不够灵活,请使用 a generic List<T>
,它实现了 FindIndex()
。
FindIndex()
采用 predicate - 一个函数 returns $true
或 $false
基于输入(项目在列表):
$eventList = New-Object System.Collections.Generic.List[string]
$eventList.Add("Hello")
$eventList.Add("test")
$eventList.Add("hi")
$predicate = {
param([string]$s)
return $s -like 'h*'
}
然后以 $predicate
函数作为唯一参数调用 FindIndex()
:
PS> $eventList.FindIndex($predicate)
0
(它与索引 0 处的 Hello
匹配,因为它以 h
开头)
在数组列表中添加字符串元素并找到它的索引值?
[code...]
$eventList = New-Object System.Collections.ArrayList
$eventList.Add("Hello")
$eventList.Add("test")
$eventList.Add("hi")
不工作抛出错误:-
Method invocation failed because [System.String[]] doesn't contain a method named 'Add'.
At C:\Users\Administrator\Desktop\qwedqwe.ps1:9 char:15
+ $eventList.Add <<<< ("Hello")
+ CategoryInfo : InvalidOperation: (Add:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
如评论中所述,如果您是在 ISE(或另一个 IDE)中开发的,并且之前已为 $eventList
分配了类型转换,如下所示:
[string[]]$eventList = @()
或类似的,注释掉前面的行对您没有帮助 - 变量已经存在并且将在其剩余生命周期内绑定该类型。
您可以使用 Remove-Variable eventList
排序后,我们可以继续实际定位索引。如果您对完全匹配的索引感兴趣,请使用 IndexOf()
:
PS> $eventList.IndexOf('hi')
2
如果这不够灵活,请使用 a generic List<T>
,它实现了 FindIndex()
。
FindIndex()
采用 predicate - 一个函数 returns $true
或 $false
基于输入(项目在列表):
$eventList = New-Object System.Collections.Generic.List[string]
$eventList.Add("Hello")
$eventList.Add("test")
$eventList.Add("hi")
$predicate = {
param([string]$s)
return $s -like 'h*'
}
然后以 $predicate
函数作为唯一参数调用 FindIndex()
:
PS> $eventList.FindIndex($predicate)
0
(它与索引 0 处的 Hello
匹配,因为它以 h
开头)