複数のパターンを 1 つの文字列に適用する (ループを使用しない) 簡単な方法はありますか?
それで
"c:\myfile.txt" -like "*.dat","*.txt"
$true を返す必要があります
"c:\myfile.dat" -like "*.dat","*.txt"
$true を返す必要があります
"c:\myfile.doc" -" .dat"," .txt"など
$false を返す必要があります
複数のパターンを 1 つの文字列に適用する (ループを使用しない) 簡単な方法はありますか?
それで
"c:\myfile.txt" -like "*.dat","*.txt"
$true を返す必要があります
"c:\myfile.dat" -like "*.dat","*.txt"
$true を返す必要があります
"c:\myfile.doc" -" .dat"," .txt"など
$false を返す必要があります
私はそうは思わない。正規表現を使用できます。
"c:\myfile.txt" -match '^.+\.(dat|txt)$'
アップデート
ワイルドカードパターンを含む入力から正規表現パターンを作成します。
PS> $or = '"*.dat","*.txt","*.foo"' -replace '"|\*\.' -replace ',','|'
PS> $pattern = '^.+({0})$' -f $or
PS> $pattern
^.+(dat|txt|foo)$
$string -match $pattern
-match
ここの代わりに使用してみることができ-like
ます:
"c:\myfile.txt" -match "\.(dat|txt)$" ==> True
"c:\myfile.dat" -match "\.(dat|txt)$" ==> True
"c:\myfile.doc" -match "\.(dat|txt)$" ==> False