1

假设我有一个名为 $basket 的数组。

我对 $basket 进行以下检查

$basket.fruit -imatch "\bapple\b"

现在,如果我想获取 $basket[x].fruit 匹配“apple”的整个对象,有没有一种快速的方法可以做到这一点,或者我只能通过 for 循环来实现这一点,迭代 $basket 中的每个对象进行比较它带有字符串“apple”?

我想返回属性fruit与字符串“apple”匹配的数组$basket的行,我想知道除了使用for/foreach/do/while等...循环之外是否还有一种简单的方法。

对不起,如果这个问题看起来很愚蠢,但我对对象的概念相对较新,并且想知道是否有一种快速的方法可以从这里的框中提取任何 $true 比较。

编辑我的问题,改写:这样说,我有第一个集合:

$array[0].string="The quick brown fox jumps over the lazy dog"
$array[1].string="One bird in the hand is worth 2 in the bush"

然后我有:

$regex[0].reg="dog"
$regex[1].reg="bird"

我想要结束的是(例如):

$result[x].string="The quick brown fox jumps over the lazy dog"
$result[x].match="dog"

鉴于两个输入数组都有数千条记录。谢谢

4

1 回答 1

1

您可以使用 Where-Object cmdlet 过滤掉数组中与指定谓词匹配的对象(? 是 Where-Object cmdlet 的别名):

$baskets = @()

$baskets += [pscustomobject]@{fruit='banana'}
$baskets += [pscustomobject]@{fruit='apple'}
$baskets += [pscustomobject]@{fruit='kiwi'}
$baskets += [pscustomobject]@{fruit='apple'}

$baskets | ? { $_.fruit -imatch '\bapple\b' }
于 2013-10-15T16:57:27.693 回答