PowerShell,文字列の先頭から、指定した文字列を検索する

スポンサーリンク

鍛錬 626

PowerShell,文字列の先頭から、指定した文字列を検索する

「指定した文字列」が、「検索対象の文字列中」に存在するのかを、文字列の先頭から確認し、存在した場合にその位置を取得するには、.NETオブジェクトにおける String クラスのインスタンスメソッド、IndexOf を使用します。
 
使用方法は、以下に示す通りです。

検索対象の文字列.IndexOf(検索する文字列)

引数

以下は、上記の引数についてです。

引数
検索する文字列 String

戻り値

以下は、戻り値についてです。

文字列が存在した場合は、先頭から 0、1、2、3 ・・・ の数値で、その位置を返します。

戻り値
文字列が存在した場合 文字列の位置 Int32
文字列が存在しなかった場合 -1 Int32
 
スポンサーリンク

スクリプト

以下は、指定した文字列が検索対象の文字列中に存在するのかを確認するスクリプト、str_point.ps1 です。

今回は、文字列「A1B2C3」について確認しています。

検索対象の文字列
A1B2C3
検索する文字列(1) 検索する文字列(2)
B2 XXX
# 変数初期化
[System.String]$str = $null
[System.String]$cmp_str = $null
[System.Int32]$result = 0
[System.Int32]$p = 0

# 検索対象の文字列を格納
$str = "A1B2C3"

# 検索する文字列を格納
$cmp_str = "B2"

# 文字列を先頭から検索
$result = $str.IndexOf($cmp_str)

# 文字列が存在する場合
if ($result -ne -1) {
	$p = $result + 1
	echo "文字列[$cmp_str]は、文字列[$str]の、[$p]番目の文字から存在する。"
}
# 文字列が存在しない場合
else {
	echo "文字列[$cmp_str]は、文字列[$str]に存在しない。"
}

# ----------------------------------------------------------------

# 検索対象の文字列を格納
$str = "A1B2C3"

# 検索する文字列を格納
$cmp_str = "XXX"

# 文字列を先頭から検索
$result = $str.IndexOf($cmp_str)

# 文字列が存在する場合
if ($result -ne -1) {
	$p = $result + 1
	echo "文字列[$cmp_str]は、文字列[$str]の、[$p]番目の文字から存在する。"
}
# 文字列が存在しない場合
else {
	echo "文字列[$cmp_str]は、文字列[$str]に存在しない。"
}

実行結果

以下は、スクリプト str_point.ps1 を実行しています。

PS D:\tmp>
PS D:\tmp> .\str_point.ps1
文字列[B2]は、文字列[A1B2C3]の、[3]番目の文字から存在する。
文字列[XXX]は、文字列[A1B2C3]に存在しない。

 
上記に示した通り、指定した文字列が検索対象の文字列中に存在するのかを確認し、存在した場合はその位置を取得することができました。

スポンサーリンク

シェアする

フォローする