PowerShell IndexOf 文字列の位置を取得する

PowerShellのIndexOf で文字列の位置を取得するサンプルです。

目次

サンプル 前から検索する(引数1つ)
  前から検索する+開始位置を指定(引数2つ)
  後から検索する(引数1つ)
  後から検索する+開始位置を指定(引数2つ)

前から検索する(引数1つ)

IndexOf(値);
  • 文字列の先頭から検索して引数に指定した文字列が出現した位置を返します。
  • 先頭の1文字目の位置は0です。
  • 該当の文字がなかったときは-1を返します。

IndexOfメソッドで前から検索するサンプルです。

$str1 = "abcabc"

Write-Host ($str1.IndexOf("a")) # 0
Write-Host ($str1.IndexOf("b")) # 1
Write-Host ($str1.IndexOf("c")) # 2
Write-Host ($str1.IndexOf("abc")) # 0
Write-Host ($str1.IndexOf("z")) # -1

$str2 = "あいうあいう"

Write-Host ($str2.IndexOf("あ")) # 0
Write-Host ($str2.IndexOf("い")) # 1
Write-Host ($str2.IndexOf("う")) # 2

3~6行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
7行目は、該当の文字がないので-1が返ります。
9行目は、変数に日本語の文字列を代入しています。

前から検索する+開始位置を指定(引数2つ)

IndexOf(値 , 開始位置);

IndexOfメソッドで検索開始位置を指定するサンプルです。
2つ目の引数は、検索を始める位置です。

$str1 = "あいうあいう"

Write-Host ($str1.IndexOf("あ",0)) # 0
Write-Host ($str1.IndexOf("あ",1)) # 3
Write-Host ($str1.IndexOf("あ",2)) # 3
Write-Host ($str1.IndexOf("あ",3)) # 3
Write-Host ($str1.IndexOf("あ",4)) # -1
Write-Host ($str1.IndexOf("あ",5)) # -1

3行目の2つめの引数は0で対象の文字列は(あいうあいう)です。位置の0が返ります。
4行目の2つめの引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
5行目の2つめの引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
6行目の2つめの引数は3で対象の文字列は(あいう)です。位置の3が返ります。
7行目の2つめの引数は4で対象の文字列は(いう)です。文字(あ)はないので-1です。
8行目の2つめの引数は5で対象の文字列は(う)です。文字(あ)はないので-1です。

後から検索する(引数1つ)

LastIndexOf(値);
  • 文字列の最後から検索して引数に指定した文字列が出現した位置を返します。
  • 先頭の1文字目の位置は0です
  • 該当の文字がなかったときは-1を返します。

LastIndexOfメソッドで後から検索するサンプルです。

$str1 = "abcabc"

Write-Host ($str1.LastIndexOf("a")) # 3
Write-Host ($str1.LastIndexOf("b")) # 4
Write-Host ($str1.LastIndexOf("c")) # 5
Write-Host ($str1.LastIndexOf("abc")) # 3
Write-Host ($str1.LastIndexOf("z")) # -1

$str2 = "あいうあいう"

Write-Host ($str2.LastIndexOf("あ")) # 3
Write-Host ($str2.LastIndexOf("い")) # 4
Write-Host ($str2.LastIndexOf("う")) # 5

3~6行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。
7行目は、該当の文字がないので-1が返ります。
9行目は、変数に日本語の文字列を代入しています。

後から検索する+開始位置を指定(引数2つ)

LastIndexOf(値, 開始位置);

LastIndexOfメソッドで検索開始位置を指定するサンプルです。
2つ目の引数は、検索を始める位置です。

$str1 = "あいうあいう"

Write-Host ($str1.LastIndexOf("あ",5)) # 3
Write-Host ($str1.LastIndexOf("あ",4)) # 3
Write-Host ($str1.LastIndexOf("あ",3)) # 3
Write-Host ($str1.LastIndexOf("あ",2)) # 0
Write-Host ($str1.LastIndexOf("あ",1)) # 0
Write-Host ($str1.LastIndexOf("あ",0)) # 0

3行目の引数は5で対象の文字列は(あいうあいう)です。位置の3が返ります。
4行目の引数は4で対象の文字列は(あいうあい)です。位置の3が返ります。
5行目の引数は3で対象の文字列は(あいうあ)です。位置の3が返ります。
6行目の引数は2で対象の文字列は(あいう)です。位置の0が返ります。
7行目の引数は1で対象の文字列は(あい)です。位置の0が返ります。
8行目の引数は0で対象の文字列は(あ)です。位置の0が返ります。

関連の記事

PowerShell Substring 文字列を切り出す

△上に戻る