PowerShellで文字列を切り出す方法3選!特定の文字以降/以前も抽出可!

powershell

PowerShellで文字列を切り出したいときはないでしょうか。

けど、そんな中で悩むことは、

・PowerShellで文字列を切り出したいが方法がよくわからない
・PowerShellで特定文字以降の文字列を切り出したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・PowerShellで文字列を切り出す方法
・PowerShellで文字列の特定の文字以降/以前を切り出す方法

についてまとめます!

PowerShellで特定文字以降の文字列を切り出すイメージ

PowerShellで特定文字以降の文字列を切り出すイメージについて説明をします。

以下のような文字列があったとします。

「こんにちは、エク短!、よろしく!」
または
「こんにちは、エク短!、よろしく!、おねがい!」

特定文字を句点「、」としますが、句点は複数あるので、句点の位置を認識させた上で、前半の句点以前の文字列、後半の句点以降の文字列を切り出し抽出していきます。

前半の句点以前の文字列の場合

こんにちは

後半の句点以降の文字列の場合

「よろしく!」
または
「おねがい!」

が抽出される形となります。

タカヒロ
タカヒロ
なお、文字数の単位は全角/半角ともに1カウントとなります。

PowerShellで文字列を切り出す方法①:Select-ObjectコマンドレットとSplit演算子を使用

PowerShellのSelect-ObjectコマンドレットとSplit演算子を使用し、文字列を切り出す方法について説明をします。

Select-Objectコマンドレットについて

Select-Objectコマンドレットを使い指定の値を抽出します。
Select-Objectコマンドレットは、オブジェクトまたはオブジェクトのセットの指定されたプロパティを選択します。また、配列内の一意のオブジェクト、指定された数のオブジェクト、または指定された位置にあるオブジェクトを選択することもでき、今回はこの機能を利用します。

Select-Objectコマンドレットのパラメーター

パラメーター {説明}
-First 初めの要素を抽出します。
-Last 最後の要素を抽出します。

参考:https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/select-object?view=powershell-7.3

Split演算子について

特定の文字を判断するため、Split演算子を使用します。

Split 演算子は、1 つ以上の文字列を部分文字列に分割し配列として操作が可能になります。

構文

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

サンプルコマンド

"あ:い:う" -split ":"

結果です。



PowerShellで特定文字以降の文字列を切り出す:方法①

PowerShellで特定文字以降の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!'
$substring = $strTemp -split '、' | Select-Object -Last 1
Write-Output $substring

結果

よろしく!

PowerShellで特定文字以前の文字列を切り出す:方法①

PowerShellで特定文字以前の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!'
$substring = $strTemp -split '、' | Select-Object -First 1
Write-Output $substring

結果

こんにちは

PowerShellで文字列を切り出す方法②:Split演算子と配列要素指定を使用

PowerShellのSplit演算子と配列要素指定を使用した文字列を切り出す方法について説明をします。

PowerShellのSplit演算子を使うと特定文字を基準に分割され、配列として要素の操作ができるというところは前回と同様になります。
今回はさらに配列の要素数を取得し、最後の要素を求め、配列のインデックス値により要素を指定し、特定文字以降を切り出していきたいと思います。

PowerShellで特定文字以降の文字列を切り出す:方法②

PowerShellで特定文字以降の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!'
$substring = $strTemp -split '、'
$intArrLength = $substring.Length - 1
Write-Output $substring[$intArrLength]

結果

よろしく!

PowerShellで特定文字以前の文字列を切り出す:方法②

PowerShellで特定文字以前の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!'
$substring = $strTemp -split '、'
Write-Output $substring[0]

結果

こんにちは

タカヒロ
タカヒロ
初めの要素を取得するパターンはこちらが一番シンプルですね。

PowerShellで文字列を切り出す方法③:SubstringメソッドとIndexOf メソッドを使用

PowerShellのSubstringメソッドとIndexOf メソッドを使用した文字列を切り出す方法について説明をします。

PowerShellのSubstringメソッドは開始位置と文字数を指定するとインスタンスから部分的に文字列を取得することができます。構文は以下の通りです。

Substringメソッド

<対象文字列>.Substring( <startIndex>,< 文字数>)

IndexOf メソッド

次に特定したい文字列の位置を取得するためIndexOf メソッドを使います。構文は以下の通りです。

<対象文字列>.IndexOf( <検査値>)

後ろから検索する場合はLastIndexOfメソッドを使います。

<対象文字列>.LastIndexOf(<検査値>)

PowerShellで特定文字以降の文字列を切り出す:方法③

PowerShellで特定文字以降の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!、おねがい!'

$intMojiichi = $strTemp.LastIndexOf('、')  + 1
$intAllMojiLength = $strTemp.Length
$intMojiLength = $intAllMojiLength - $intMojiichi
$substring = $strTemp.Substring( $intMojiichi,$intMojiLength)
Write-Output $substring

結果

おねがい!

PowerShellで特定文字以前の文字列を切り出す:方法③

PowerShellで特定文字以前の文字列を切り出すサンプルコマンドと結果です。

サンプルコマンド

$strTemp = 'こんにちは、エク短!、よろしく!、おねがい!'

$intMojiLength = $strTemp.IndexOf('、') 
$substring = $strTemp.Substring(0,$intMojiLength)
Write-Output $substring

結果

こんにちは

ExcelからPowerShellを実行し結果をExcelにまとめる

通常PowerShellはコマンドウインドウやPSファイルにして実行するケースが多いですが、

ExcelからPowerShellコマンドを実行してその結果をそのExcelへ返してセルへ表示させることもできます。

もしPowerShellの実行結果を別ファイルにまとめたい場合は、実行環境と出力結果をひとつのExcelでまとめてできるのでとても便利です。

ExcelからPowerShellを実行し結果をExcelにまとめる

詳細は以下にまとめていますので、よろしければ利用してみてください。

Excel VBAでPowerShellを実行する方法2選!処理結果取得も!

タカヒロ
タカヒロ
だいたい5~10分ぐらいで追加インストールなしで用意することができます。

Excelで特定の文字に囲まれた文字を抽出・削除する方法

Excelで特定の文字に囲まれた文字を抽出・削除する方法についてワークシート関数やVBAごとにまとめていますので、よろしければこちらもご参考ください。

Excelで文字列を抽出・削除する様々な方法まとめ!関数の他VBAで一括処理も!

さいごに

いかがでしょうか。

今回は、

・PowerShellで文字列を切り出す方法
・PowerShellで文字列の特定の文字以降/以前を切り出す方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です