Compare-Objectはワイルドカードを取得できないため、長さや内容が完全に同じではないが、ワイルドカードセットまたは正規表現がそれらをキャッチするのに十分類似している内容について、2つの配列をどのように比較しますか。
例:
$form = "First Name","Last Name","Address","Phone","Nickname","Fax Number"
$data = "First Name ","Last Name","Street Address","Phone number","",Fax"
たくさんのifステートメントや演算子を実行せずに配列を比較できますか?スイッチはおそらくもっとエレガントでしょうが、私はこれと同じように1行でこれを実行できるようにしたいと思っています。
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"
}
}