ja-JP/about_Split.help.txt

TOPIC
    about_Split

簡単な説明
    1 つ以上の文字列を部分文字列に分割する -split 演算子について
    説明します。

詳細な説明
    Split 演算子は、1 つ以上の文字列を部分文字列に分割します。分割
    操作では次の要素を変更できます。

    - 区切り文字。既定は空白文字ですが、区切り文字となる文字、文字列、
      パターン、またはスクリプトブロックを指定できます。PowerShell の
      Split 演算子は、区切り文字に単純な文字ではなく正規表現を使用します。
    - 部分文字列の最大数。既定はすべての部分文字列を返します。部分文字列
      の数より小さい数を指定すると、残りの部分文字列は最後の部分文字列に
      連結されます。
    - 区切り文字を一致させる条件を指定するオプション (SimpleMatch や
      Multiline など)。

構文
    -split 演算子の構文を次に示します。

    パラメーター名はコマンドには現れません。パラメーターの値だけを含め
    ます。値は構文図で指定された順序で記述する必要があります。

        -split <String>
        -split (<String[]>)
        <String> -split <Delimiter>[,<Max-substrings>[,"<Options>"]]
        <String> -split {<ScriptBlock>} [,<Max-substrings>]

    区切り文字またはスクリプトブロックを含む二項 Split 文では、-split の
    代わりに -isplit または -csplit を使用できます。-isplit と -split は
    大文字と小文字を区別しません。-csplit は大文字と小文字を区別します。
    つまり、区切り文字の規則を適用する際に大文字小文字が考慮されます。

パラメーター
    <String> または <String[]>

    分割する 1 つ以上の文字列を指定します。複数の文字列を渡すと、すべての
    文字列が同じ区切り規則を使用して分割されます。

    例:

        -split "red yellow blue green"
        red
        yellow
        blue
        green

    <Delimiter>

    部分文字列の終わりを示す文字です。既定の区切り文字は、空白や改行
    (`n)、タブ (`t) などの非表示文字を含む空白文字です。文字列が分割
    されると、区切り文字はすべての部分文字列から除かれます。例:

        "Lastname:FirstName:Address" -split ":"
        Lastname
        FirstName
        Address

    既定では区切り文字は結果から除かれます。区切り文字の全部または一部を
    保持するには、保持したい部分をかっこで囲みます。<Max-substrings>
    パラメーターを追加すると、コレクションを分割する際にこれが優先されます。
    区切り文字を出力の一部として含めることを選んだ場合、コマンドは区切り
    文字を出力の一部として返しますが、区切り文字を出力に返すための分割は
    分割回数には数えられません。

    例:

        "Lastname:FirstName:Address" -split "(:)"
        Lastname
        :
        FirstName
        :
        Address

        "Lastname/:/FirstName/:/Address" -split "/(:)/"
        Lastname
        :
        FirstName
        :
        Address

    <Max-substrings>

    分割操作で返される部分文字列の最大数を指定します。既定は区切り文字で
    分割されたすべての部分文字列です。部分文字列がそれより多い場合、残りは
    最後の部分文字列に連結されます。部分文字列がそれより少ない場合は、
    すべての部分文字列が返されます。値 0 はすべての部分文字列を返します。

    例:

        $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
        $c -split ",", 5

        Mercury
        Venus
        Earth
        Mars
        Jupiter,Saturn,Uranus,Neptune

    複数の文字列 (文字列の配列) を -split 演算子に渡した場合、
    Max-substrings の制限は各文字列に個別に適用されます。

        $c = 'a,b,c','1,2,3,4,5'
        $c -split ',', 3

        a
        b
        c
        1
        2
        3,4,5

    <Max-substrings> は返されるオブジェクトの最大数を指定するものでは
    ありません。次の例では <Max-substrings> を 3 に設定しています。これに
    より 3 つの部分文字列値が得られますが、出力結果は合計 5 つの文字列に
    なります。区切り文字は、部分文字列が最大数の 3 に達するまで分割の後に
    含まれます。最後の部分文字列に含まれる追加の区切り文字は、その部分
    文字列の一部になります。

        'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3

        Chocolate
        -
        Vanilla
        -
        Strawberry-Blueberry

    負の値を指定すると、入力文字列の末尾から要求した数の部分文字列を
    返します。

    注:
        負の値のサポートは PowerShell 7 で追加されました。

        $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
        $c -split ",", -5

        Mercury,Venus,Earth,Mars
        Jupiter
        Saturn
        Uranus
        Neptune

    <ScriptBlock>

    区切り文字を適用する規則を指定する式です。式は $true または $false に
    評価される必要があります。スクリプトブロックは中かっこで囲みます。

    例:

        $c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune"
        $c -split {$_ -eq "e" -or $_ -eq "p"}

        M
        rcury,V
        nus,
        arth,Mars,Ju
        it
        r,Saturn,Uranus,N

        tun

    <Options>

    オプション名は引用符で囲みます。オプションは、文中で
    <Max-substrings> パラメーターが使用されている場合にのみ有効です。

    Options パラメーターの構文は次のとおりです。

        "SimpleMatch [,IgnoreCase]"

        "[RegexMatch] [,IgnoreCase] [,CultureInvariant]
        [,IgnorePatternWhitespace] [,ExplicitCapture]
        [,Singleline | ,Multiline]"

    SimpleMatch オプションは次のとおりです。

    - SimpleMatch: 区切り文字を評価する際に単純な文字列比較を使用します。
      RegexMatch と併用できません。
    - IgnoreCase: -csplit 演算子が指定されていても、大文字小文字を区別
      しない一致を強制します。

    RegexMatch オプションは次のとおりです。

    - RegexMatch: 区切り文字の評価に正規表現の一致を使用します。これが
      既定の動作です。SimpleMatch と併用できません。
    - IgnoreCase: -csplit 演算子が指定されていても、大文字小文字を区別
      しない一致を強制します。
    - CultureInvariant: 区切り文字の評価において言語の文化的な違いを
      無視します。RegexMatch でのみ有効です。
    - IgnorePatternWhitespace: エスケープされていない空白と、ハッシュ
      文字 (#) で示されるコメントを無視します。RegexMatch でのみ有効です。
    - Multiline: 複数行モードでは、^ と $ が入力文字列全体の先頭と末尾
      ではなく、各行の先頭と末尾に一致するよう強制します。
    - Singleline: 単一行モードでは、入力文字列を 1 行として扱います。.
      文字が、改行 \n を除くすべての文字ではなく、改行を含むすべての文字に
      一致するよう強制します。
    - ExplicitCapture: 名前のない一致グループを無視し、明示的なキャプチャ
      グループだけが結果リストに返されるようにします。RegexMatch でのみ
      有効です。

単項および二項 Split 演算子
    単項 Split 演算子 (-split <string>) はコンマより優先順位が高くなって
    います。その結果、文字列のコンマ区切りリストを単項 Split 演算子に
    渡すと、最初の文字列 (最初のコンマより前) だけが分割されます。

    複数の文字列を分割するには、次のいずれかのパターンを使用します。

    - 二項 Split 演算子 (<string[]> -split <delimiter>) を使用する
    - すべての文字列をかっこで囲む
    - 文字列を変数に格納し、その変数を Split 演算子に渡す

    次の例を考えてみます。

        PS> -split "1 2", "a b"
        1
        2
        a b

        PS> "1 2", "a b" -split " "
        1
        2
        a
        b

        PS> -split ("1 2", "a b")
        1
        2
        a
        b

        PS> $a = "1 2", "a b"
        PS> -split $a
        1
        2
        a
        b


    次の文は文字列を空白で分割します。

        -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"

        Windows
        PowerShell
        2.0
        Windows
        PowerShell
        with
        remoting

    次の文は文字列を任意のコンマで分割します。

        "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','

        Mercury
        Venus
        Earth
        Mars
        Jupiter
        Saturn
        Uranus
        Neptune

    次の文は文字列をパターン "er" で分割します。

        "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'

        M
        cury,Venus,Earth,Mars,Jupit
        ,Saturn,Uranus,Neptune

    次の文は文字 "N" で大文字小文字を区別した分割を行います。

        "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -csplit 'N'

        Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
        eptune

    次の文は文字列を "e" と "t" で分割します。

        "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'

        M
        rcury,V
        nus,
        ar
        h,Mars,Jupi

        r,Sa
        urn,Uranus,N
        p
        un

    次の文は文字列を "e" と "r" で分割しますが、結果の部分文字列を
    6 つに制限します。

        "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6

        M

        cu
        y,V
        nus,
        arth,Mars,Jupiter,Saturn,Uranus,Neptune

    次の文は文字列を 3 つの部分文字列に分割します。

        "a,b,c,d,e,f,g,h" -split ",", 3

        a
        b
        c,d,e,f,g,h

    次の文は文字列の末尾から 3 つの部分文字列に分割します。

        "a,b,c,d,e,f,g,h" -split ",", -3

        a,b,c,d,e,f
        g
        h

    次の文は 2 つの文字列を 3 つの部分文字列に分割します。
    (制限は各文字列に個別に適用されます。)

        "a,b,c,d", "e,f,g,h" -split ",", 3

        a
        b
        c,d
        e
        f
        g,h

    次の文は here-string の各行を最初の数字で分割します。Multiline
    オプションを使用して各行と文字列の先頭を認識します。

    0 は Max-substrings パラメーターの「すべてを返す」値を表します。
    Multiline などのオプションは、Max-substrings の値が指定されている
    場合にのみ使用できます。

        $a = @'
        1The first line.
        2The second line.
        3The third of three lines.
        '@
        $a -split "^\d", 0, "Multiline"

        The first line.

        The second line.

        The third of three lines.

    次の文はバックスラッシュ文字を使って、区切り文字のドット (.) を
    エスケープします。

    既定の RegexMatch では、引用符で囲まれたドット (".") は改行文字を
    除く任意の文字に一致すると解釈されます。その結果、Split 文は改行を
    除くすべての文字に対して空行を返します。

        "This.is.a.test" -split "\."

        This
        is
        a
        test

    次の文は SimpleMatch オプションを使って、-split 演算子にドット (.)
    区切り文字をそのまま解釈するよう指示します。

    0 は Max-substrings パラメーターの「すべてを返す」値を表します。
    SimpleMatch などのオプションは、Max-substrings の値が指定されて
    いる場合にのみ使用できます。

        "This.is.a.test" -split ".", 0, "SimpleMatch"

        This
        is
        a
        test

    次の文は、変数の値に応じて 2 つの区切り文字のいずれかで文字列を
    分割します。

        $i = 1
        $c = "LastName, FirstName; Address, City, State, Zip"
        $c -split $(if ($i -lt 1) {","} else {";"})

        LastName, FirstName
         Address, City, State, Zip

関連項目
    about_Operators
    about_Comparison_Operators
    about_Join
    about_Regular_Expressions

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