PowerShellで文字列を切り出したいときはないでしょうか。
けど、そんな中で悩むことは、
・PowerShellで特定文字以降の文字列を切り出したいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・PowerShellで文字列の特定の文字以降/以前を切り出す方法
についてまとめます!
もくじ
PowerShellで特定文字以降の文字列を切り出すイメージ
PowerShellで特定文字以降の文字列を切り出すイメージについて説明をします。
以下のような文字列があったとします。
「こんにちは、エク短!、よろしく!」
または
「こんにちは、エク短!、よろしく!、おねがい!」
特定文字を句点「、」としますが、句点は複数あるので、句点の位置を認識させた上で、前半の句点以前の文字列、後半の句点以降の文字列を切り出し抽出していきます。
前半の句点以前の文字列の場合
こんにちは
後半の句点以降の文字列の場合
「よろしく!」
または
「おねがい!」
が抽出される形となります。
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で特定の文字に囲まれた文字を抽出・削除する方法
Excelで特定の文字に囲まれた文字を抽出・削除する方法についてワークシート関数やVBAごとにまとめていますので、よろしければこちらもご参考ください。
さいごに
いかがでしょうか。
今回は、
・PowerShellで文字列の特定の文字以降/以前を切り出す方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す