最稳健的方法是提取嵌入的数字,对它们进行数字排序,然后添加1
到迄今为止的最高索引:
$nextNdx = 1 +
([int[]] ($items.Property -match '^OPEN' -replace '\D') | Sort-Object)[-1]
$items.Property -match '^OPEN' -replace '\D'
返回所有以 开头的属性名称,OPEN
并从中删除所有非数字字符 ( -replace '\D'
)。
[int[]]
将生成的“数字字符串”转换为实际数字 ( [int]
);请注意,在 PowerShell中强制转换''
或$null
生成.[int]
0
Sort-Object
对这些数字进行排序,并[-1]
从结果数组中获取最后一个数字,即最大的数字。
由于使用了管道和Sort-Object
cmdlet,上述方法很方便,但并不快速。
如果出于性能原因要避免使用管道:
$indices = [int[]] ($items.Property -match '^OPEN' -replace '\D')
[Array]::Sort($indices) # sort in place
$nextNdx = 1 + $indices[-1]