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 |