PowerShell: 文字列を検索する IndexOf, LastIndexOf, Contains
PowerShellで文字列を検索する場合はいくつか方法があります。
文字列の先頭から検索し、見つかった位置を知りたい場合はIndexOfメソッド、
文字列の最後から検索し、見つかった位置を知りたい場合はLastIndesOfメソッド、
単に文字列が含まれているかどうかを知りたい場合はContainsメソッドを使用します。
いずれも.NET Framework Stringクラスのメソッドです。
IndexOfメソッド: 先頭から検索して見つかった位置を返す
IndexOfメソッドは文字列の先頭から検索し、 見つかった位置を返します。先頭は0で2文字目は1です。 見つからなかった場合の戻り値は「-1」です。
書式
文字列.IndexOf(検索文字列 [, 開始位置])
第1引数に検索文字列を指定し、第2引数には検索開始位置を指定できます。 文字列の途中から検索したい場合は第2引数を指定します。
次のサンプルコードはIndexOfメソッドを使った検索例です。
$s = "abcde" Write-Host $s.IndexOf("cd") # 2 Write-Host $s.IndexOf("xyz") # -1(見つからない場合) $s = "abcdeabcde" # 検索開始位置を指定 Write-Host $s.IndexOf("cd", 5) # 7
LastIndexOfメソッド: 最後から検索して見つかった位置を返す
LastIndexOfメソッドはIndexOfとは逆で、 文字列の最後尾から先頭に向かって検索します。 見つからなかった場合の戻り値は「-1」です。書式
文字列.LastIndexOf(検索文字列 [, 開始位置])
第2引数の開始位置を指定した場合、 指定位置から先頭に向かって検索します。
次のサンプルコードはLastIndexOfメソッドを使った検索例です。
$s = "abcdeabcde" Write-Host $s.LastIndexOf("cd") # 7 Write-Host $s.LastIndexOf("xyz") # -1(見つからない場合) # 検索開始位置を指定 Write-Host $s.LastIndexOf("cd", 5) # 2
Containsメソッド: 文字列が含まれているかどうかを調べる
Containsメソッドは単に文字列が含まれているかどうかを 知りたい場合に使います。含まれている場合の戻り値はTrue、 そうでない場合はFalseです。
書式
文字列.Contains(検索文字列 [, 比較オプション])
デフォルトでは大文字・小文字を区別して調べます。 大文字・小文字を区別しない場合は第2引数に1を指定します。
次のサンプルコードはContsinsメソッドを使った検索例です。
$s = "abcde" Write-Host $s.Contains("abc") # True Write-Host $s.Contains("xyz") # False Write-Host $s.Contains("ABC") # False # 大文字・小文字を区別しない Write-Host $s.Contains("ABC", 1) # True
参考サイト
String クラス (System) | Microsoft Docs