ja-JP/about_Switch.help.txt

TOPIC
    about_Switch

簡単な説明
    複数の if 文の代わりに、条件と対応する処理をまとめて記述できる
    switch 文を説明します。

詳細な説明
    値が複数の条件のいずれかに一致するかどうかを調べたい場合、if 文を
    いくつも並べる代わりに switch 文を使えます。switch 文は、調べる値を
    各条件と順番に照合し、一致した条件のコードブロックを実行します。

    基本的な構文は次のとおりです。

    switch (<テスト式>) {
        <一致させる値1> { <実行するコード> }
        <一致させる値2> { <実行するコード> }
        default { <どれにも一致しないときのコード> }
    }

    テスト式に配列やコレクションを指定すると、各要素が 1 つずつ照合され
    ます。一致した要素ごとに、対応するコードブロックが実行されます。
    現在処理中の値は自動変数 $_ で参照できます。

    既定では、文字列の比較は大文字小文字を区別しない完全一致です。値は
    比較の前にすべて文字列へ変換されます。

    オプションのパラメーターで照合方法を変更できます。

    -Wildcard ワイルドカード (*, ?) による一致を行います。
    -Regex 正規表現による一致を行います。一致内容は $Matches
                    で参照できます。
    -Exact ワイルドカードや正規表現を使わず完全一致にします。
    -CaseSensitive 大文字小文字を区別して比較します。
    -File <パス> 指定ファイルを 1 行ずつ読み込み、各行を照合します。

    複数のパラメーターを組み合わせられます。

    switch -Regex -CaseSensitive (<テスト式>) {
        ...
    }



    switch (3) {
        1 { "one" }
        2 { "two" }
        3 { "three" }
    }
    # three

    # default 句と複数値の照合
    switch (4, 2) {
        1 { "one" }
        2 { "two" }
        default { "その他: $_" }
    }
    # two
    # その他: 4

    # -Wildcard を使う例
    switch -Wildcard ("PowerShell") {
        "Power*" { "Power で始まります" }
        "*Shell" { "Shell で終わります" }
    }
    # Power で始まります
    # Shell で終わります

    # -Regex と $Matches を使う例
    switch -Regex ("abc123") {
        "(\d+)" { "数字部分: $($Matches[1])" }
    }
    # 数字部分: 123

ループ制御

    既定では、ある値が複数の条件に一致した場合、一致したすべての
    コードブロックが実行されます。これを制御するキーワードがあります。

    - break : switch 文全体を即座に終了します。それ以降の値や条件は
                 照合されません。
    - continue : 現在の値の照合を打ち切り、次の値の照合へ進みます。
                 (-File やコレクションを処理しているときに役立ちます)

    switch -Regex (1, 2, 3, 4) {
        "1" { "1 です"; break }
        "2" { "2 です" }
    }
    # 1 です (break により以降の値は処理されない)

関連項目
    about_If
    about_Comparison_Operators
    about_Break
    about_Continue
    about_Foreach

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP