PS>$text = "bbb" PS> PS>switch($text){ >> aaa{"aaaが見つかりました";break} >> bbb{"bbbが見つかりました";break} >> ccc{"cccが見つかりました";break} >> {$_.length -eq 3}{"3桁の文字が見つかりました";break} >> default{"不明な文字が見つかりました"} >> } >> bbbが見つかりました |
PS>$text = "bbb" PS> PS>switch -wildcard ($text){ >> aaa{"aaaが見つかりました";break} >> b*{"bbbが見つかりました";break} >> ccc{"cccが見つかりました";break} >> default{"不明な文字が見つかりました"} >> } >> bbbが見つかりました |
正規表現も使える。
PS>$text = "bbb" PS> PS>switch -regex ($text){ >> aaa{"aaaが見つかりました";break} >> "bbb$"{"bbbが見つかりました";break} >> ccc{"cccが見つかりました";break} >> default{"不明な文字が見つかりました"} >> } >> bbbが見つかりました |
次の様な内容のファイルがあったとすると
bbb
ccc
ddd
aaaa
PS> PS>switch -file test.txt{ >> aaa{"aaaが見つかりました";break} >> bbb{"bbbが見つかりました";break} >> ccc{"cccが見つかりました";break} >> {$_.length -eq 3}{"3桁の文字が見つかりました";break} >> default{"不明な文字が見つかりました"} >> } >> bbbが見つかりました |
あれ、1行目しかヒットしない。
どうやら、breakはswitchステートメント全体をbreakしてしまうようだ。
ファイルの全行を判定するには、
PS> PS>switch -file test.txt{ >> aaa{"aaaが見つかりました";continue} >> bbb{"bbbが見つかりました";continue} >> ccc{"cccが見つかりました";continue} >> {$_.length -eq 3}{"3桁の文字が見つかりました";continue} >> default{"不明な文字が見つかりました"} >> } >> bbbが見つかりました cccが見つかりました 3桁の文字が見つかりました 不明な文字が見つかりました |
breakとcontinueの使い分けについては、通常のループ処理と同じ感じ。
0 件のコメント:
コメントを投稿