文字列から PowerShell の部分文字列を抽出する方法
-
Substring()
メソッドを使用した PowerShell の部分文字列の抽出 - 文字列の左側から PowerShell の部分文字列を抽出
- 指定された文字の前後で PowerShell の部分文字列を抽出
- 二つの文字の間で PowerShell の部分文字列を抽出

この記事では、PowerShell で文字列から部分文字列を抽出する方法を説明します。部分文字列とは、単に文字列の一部です。
PowerShell では、Substring()
および split()
メソッドを使用して部分文字列を作成できます。例えば、文字列 Delftstack.com
がある場合、Delftstack
は部分文字列であり、com
はもう一つの部分文字列です。
この記事では、Substring()
メソッドについて説明します。
Substring()
メソッドを使用した PowerShell の部分文字列の抽出
まず、Substring()
メソッドの構文を見てみましょう。
string.Substring(int startIndex, int length)
構文の int
は、startIndex
と length
をインデックス番号として示します。startIndex
は抽出したい部分文字列の最初の文字を示し、length
は文字列から抽出したい文字の数です。
IndexOf
メソッドを使用して、部分文字列の startIndex
と length
を決定します。
部分文字列の startIndex
は、IndexOf
の結果に 1
を加えることで決まります。例を見てみましょう。
ned.delftstack.com
が私たちの文字列だと仮定した場合、最初の文字 n
のインデックス位置は何でしょうか?以下のコマンドを実行することで位置を決定できます。
"ned.delftstack.com".IndexOf('n')
結果は 0
です。これは、IndexOf
メソッドが文字列の左から右への最初の出現を検索し、常に 0
から始めるためです。
したがって、文字 n
から始まる部分文字列を抽出したい場合、startIndex
は 0
になります。
LastIndexOf
を使用して、文字列の最後の出現の位置を見つけることもできます。例えば、文字 d
の最後の出現は次のようになります。
"ned.delftstack.com".LastIndexOf('d')
この基本的な情報を使用すると、PowerShell で文字列を操作できるようになります。
文字列の左側から PowerShell の部分文字列を抽出
上記の情報を利用してみましょう。
ned.delftstack.com
から部分文字列 ned
を抽出したいとします。どのように進めましょうか?
まず、文字列を ourstrng
という変数に保存します。
$ourstrng = "ned.delftstack.com"
Substring()
メソッドの構文から、私たちのコマンドは次のようになります。
$ourstrng.Substring(0, 3)
これにより ned
が返されます。startIndex
は 0
で、length
は 3 文字です。もし私たちの目標が文字列から delftstack
を抽出することであれば、最初のステップは部分文字列の startIndex
を決定することです。この場合、最初のピリオドを使用します。それが区切りになります。
$ourstrng.IndexOf(".")
結果は 3
になります。しかし、覚えておいてください。文字列の最初の文字のために結果に 1
を加えます。したがって、startIndex
は 4
になります。
length
は部分文字列が持つことを望む文字の数です。1 から数えます。部分文字列 delftstack
には 10
文字があります。
$ourstrng.Substring(4, 10)
これにより delftstack
が返されます。
指定された文字の前後で PowerShell の部分文字列を抽出
ned
と delftstack.com
の両方を文字列から抽出したいとしましょう。どのように進めますか?
まず、区切り文字である最初の .
の位置を決定する必要があります。以下のコマンドは、区切り文字を $sepchar
という変数に保存します。
$sepchar = $ourstrng.IndexOf(".")
部分文字列を抽出するために、以下のコマンドを実行します。
$ourstrng.Substring(0, $sepchar)
これにより、最初の部分である ned
が抽出されます。もう一つの部分文字列については、次のように実行します。
$ourstrng.Substring($sepchar + 1)
これにより delftstack.com
が返されます。
二つの文字の間で PowerShell の部分文字列を抽出
もし私たちの文字列が ned.delftstack.com
であれば、部分文字列は delftstack
になります;なぜなら、それは最初と二番目のピリオドの間にあるからです。このようなスクリプトには三つのコマンドが必要です。
最初のコマンドは、最初のピリオド (.)
の位置を決定し、firstsep
という変数に保存します。
$firstsep = $ourstrng.IndexOf(".")
二番目のコマンドは、LastIndexOf
メソッドを使用してピリオドの二番目の位置を決定し、lastrep
という変数に保存します。
$lastrep = $ourstrng.LastIndexOf(".")
最後のコマンドは、文字列から部分文字列 delftstack
を抽出します。
$ourstrng.Substring($firstsep + 1, $lastrep - 4)
結論として、PowerShell の区切りで、文字列の前、後、間で部分文字列を抽出できます。Substring()
メソッドは便利です。上記の通りです。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn