这段代码实际上有效,我很好奇我是否很幸运(!?)并在Power Shell语言中发现了一个错误(这是伪代码式的,但它说明了我的问题):
$regex = "prefix([0-9]+)"
$collection = Get-Collection | Where-Object {$_.Name -match $regex} `
| ForEach-Object { [int] $Matches[1] }
输入基本上是对象,其属性Name
可能采用“ prefix [Integer]”格式。如果是这种情况,我想提取该整数并将其插入新序列中。
这看似可行,但是感觉就像我在利用Power Shell语言中的实现细节。
您将如何解决这个问题?
问题是每个管道表达式都是一个闭包。
Where-Object
只会发送与管道匹配的项目,而不是上下文。
最简单易懂的方法是:
Get-Collection | ForEach-Object { if($_.Name -match $regex) { [int] $Matches[1] } }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句