由于Compare-Object不能使用通配符,我如何比较两个数组的长度或内容不完全相同的内容,但是对于通配符或正则表达式来捕获它们的类似。
示例:
$form = "First Name","Last Name","Address","Phone","Nickname","Fax Number"
$data = "First Name ","Last Name","Street Address","Phone number","",Fax"
我可以在不做一堆if语句和运算符的情况下比较数组吗?一个开关可能会更优雅,但我只是想在一行上这样做:
Compare-Object ("*$form*) ("*$data*")
而不是这样:
for($x=0;$x -lt $form.Count;$x++)
{
[string]$xx = $x
if($form[$x] -like "*$data[$x]*" -or $data[$x] -like "*form[$x]*" -and $data[$x] -ne $null -and $form[$x] -ne $null)
{
$form[$x]
$data[$x]
}
elseif($form[$x] -eq $null -and $data[$x] -eq $null)
{
"Form index $xx and Data index $xx are null"
}
elseif($form[$x] -eq $null)
{
"Form index $xx is null"
}
elseif($data[$x] -eq $null)
{
"Data index $xx is null"
}
else
{
"Data index $xx and Form index $xx are not even close to the same"
}
}
答案 0 :(得分:1)
我怀疑您是否能够找到已经具有示例代码中列出的“智能”的内置内容。
您可以始终使自己的功能或cmdlet具有“一行”功能,允许您重复调用它。或者作为替代方案,您可以编写自己的custom comparer。