VB.NET 文字列の位置を取得(IndexOf/LastIndexOf)

VB.NETの文字列の位置を取得するサンプルです。

目次

IndexOf+引数1つ 前から検索する
IndexOf+引数2つ 前から検索する+開始位置を指定
LastIndexOf+引数1つ 後から検索する
LastIndexOf+引数2つ 後から検索する+開始位置を指定

前から検索する

Public Function IndexOf(value As [String]) As Integer
  • 文字列の先頭から検索して引数に指定した文字列が出現した位置を返します。
  • 1つ目の引数は、検索する文字列です。
  • 該当の文字がなかったときは-1を返します。
  • 先頭の1文字目の位置は0です。

文字列の前から検索するサンプルです。

Module Module1
  Sub Main()

    Dim str1 As String = "abcabc"
    Console.WriteLine(str1.IndexOf("a")) '0が出力される
    Console.WriteLine(str1.IndexOf("b")) '1が出力される
    Console.WriteLine(str1.IndexOf("c")) '2が出力される
    Console.WriteLine(str1.IndexOf("abc")) '0が出力される
    Console.WriteLine(str1.IndexOf("z")) '-1が出力される

    Dim str2 As String = "あいうあいう"
    Console.WriteLine(str2.IndexOf("あ")) '0が出力される
    Console.WriteLine(str2.IndexOf("い")) '1が出力される
    Console.WriteLine(str2.IndexOf("う")) '2が出力される
  End Sub
End Module

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

前から検索する+開始位置を指定

Public Function IndexOf(value As [String], startIndex As Integer) As Integer

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

Module Module1
	Sub Main()
		Dim str1 As String = "あいうあいう"

		Console.WriteLine(str1.IndexOf("あ", 0)) '0
		Console.WriteLine(str1.IndexOf("あ", 1)) '3
		Console.WriteLine(str1.IndexOf("あ", 2)) '3
		Console.WriteLine(str1.IndexOf("あ", 3)) '3
		Console.WriteLine(str1.IndexOf("あ", 4)) '-1
		Console.WriteLine(str1.IndexOf("あ", 5)) '-1
	End Sub
End Module

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

以下はMicrosoftのIndexOf メソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.string.indexof?view=netframework-4.7.2

後から検索する

Public Function LastIndexOf(value As [String]) As Integer
  • 文字列の末尾から検索して引数に指定した文字列が出現した位置を返します。
  • 1つ目の引数は、検索する文字列です。
  • 該当の文字がなかったときは-1を返します。
  • 先頭の1文字目の位置は0です

文字列の後ろから検索するサンプルです。

Module Module1
  Sub Main()

    Dim str1 As String = "abcabc"
    Console.WriteLine(str1.LastIndexOf("a")) '3が出力される
    Console.WriteLine(str1.LastIndexOf("b")) '4が出力される
    Console.WriteLine(str1.LastIndexOf("c")) '5が出力される
    Console.WriteLine(str1.LastIndexOf("abc")) '3が出力される
    Console.WriteLine(str1.LastIndexOf("z")) '-1が出力される

    Dim str2 As String = "あいうあいう"
    Console.WriteLine(str2.LastIndexOf("あ")) '3が出力される
    Console.WriteLine(str2.LastIndexOf("い")) '4が出力される
    Console.WriteLine(str2.LastIndexOf("う")) '5が出力される
  End Sub
End Module

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

後から検索する+開始位置を指定

Public Function LastIndexOf(value As [String], startIndex As Integer) As Integer

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

Module Module1
	Sub Main()
		Dim str1 As String = "あいうあいう"

		Console.WriteLine(str1.LastIndexOf("あ", 5)) '3
		Console.WriteLine(str1.LastIndexOf("あ", 4)) '3
		Console.WriteLine(str1.LastIndexOf("あ", 3)) '3
		Console.WriteLine(str1.LastIndexOf("あ", 2)) '0
		Console.WriteLine(str1.LastIndexOf("あ", 1)) '0
		Console.WriteLine(str1.LastIndexOf("あ", 0)) '0
	End Sub
End Module

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

以下はMicrosoftのLastIndexOfメソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.string.lastindexof?view=netframework-4.7.2

関連の記事

VB.NET 文字列の始まり/終わりを確認(StartsWith/EndsWith)
VB.NET 正規表現で真偽値を返す(IsMatchメソッド)

△上に戻る