1

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"
   }
}
4

1 に答える 1

1

サンプルコードで概説した「インテリジェンス」がすでに組み込まれているものを見つけることができるとは思えません。

いつでも独自の関数またはコマンドレットを作成して「1行」の機能を持たせ、繰り返し呼び出すことができます。または、別の方法として、独自のカスタム比較プログラムを作成することもできます。

于 2013-01-25T13:13:05.283 に答える