Java 文字列の位置を取得(indexOf/lastIndexOf)

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

目次

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

前から検索する

public int indexOf(String str)
  • 前から検索して引数に指定した文字列が出現した位置を返します。
  • 引数は、検索する文字列です。
  • 該当の文字がなかったときは-1を返します。
  • 最初の1文字目の位置は0です。

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

package test1;
 
public class Test1 {
	public static void main(String[] args) {
		String str1 = "abcabc";
		System.out.println(str1.indexOf("a")); // 0
		System.out.println(str1.indexOf("b")); // 1
		System.out.println(str1.indexOf("c")); // 2
		System.out.println(str1.indexOf("abc")); //0
		System.out.println(str1.indexOf("z")); // -1
		
		String str2 = "あいうあいう";
		System.out.println(str2.indexOf("あ")); // 0
		System.out.println(str2.indexOf("い")); // 1
		System.out.println(str2.indexOf("う")); // 2
	}
}

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

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

public int indexOf(String str,int fromIndex)
  • 1つ目の引数は、検索する文字列です。
  • 2つめの引数は、検索を開始する位置です。

indexOfメソッドで、検索開始位置を指定するサンプルです。

package test1;
 
public class Test1 {
	public static void main(String[] args) {

		String str1 = "あいうあいう";
		System.out.println(str1.indexOf("あ",0)); // 0
		System.out.println(str1.indexOf("あ",1)); // 3
		System.out.println(str1.indexOf("あ",2)); // 3
		System.out.println(str1.indexOf("あ",3)); // 3
		System.out.println(str1.indexOf("あ",4)); // -1
		System.out.println(str1.indexOf("あ",5)); // -1
	}
}

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

以下はJava8 API仕様のindexOfメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#indexOf-java.lang.String-

後から検索する

public int lastIndexOf(String str)
  • 後ろから検索して引数に指定した文字列が出現した位置を返します。
  • 1つ目の引数は、検索する文字列です。
  • 該当の文字がなかったときは-1を返します。
  • 最初の1文字目の位置は0です

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

package test1;
 
public class Test1 {
	public static void main(String[] args) {
		String str1 = "abcabc";
		System.out.println(str1.lastIndexOf("a")); // 3
		System.out.println(str1.lastIndexOf("b")); // 4
		System.out.println(str1.lastIndexOf("c")); // 5
		System.out.println(str1.lastIndexOf("abc")); //3
		System.out.println(str1.lastIndexOf("z")); // -1
		
		String str2 = "あいうあいう";
		System.out.println(str2.lastIndexOf("あ")); // 3
		System.out.println(str2.lastIndexOf("い")); // 4
		System.out.println(str2.lastIndexOf("う")); // 5
	}
}

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

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

public int lastIndexOf(String str,int fromIndex)
  • 1つ目の引数は、検索する文字列です。
  • 2つめの引数は、検索を開始する位置です。

lastIndexOfメソッドで、検索開始位置を指定するサンプルです。

package test1;
 
public class Test1 {
	public static void main(String[] args) {

		String str1 = "あいうあいう";
		System.out.println(str1.lastIndexOf("あ",5)); // 3
		System.out.println(str1.lastIndexOf("あ",4)); // 3
		System.out.println(str1.lastIndexOf("あ",3)); // 3
		System.out.println(str1.lastIndexOf("あ",2)); // 0
		System.out.println(str1.lastIndexOf("あ",1)); // 0
		System.out.println(str1.lastIndexOf("あ",0)); // 0
	}
}

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

以下はJava8 API仕様のlastIndexOfメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#lastIndexOf-java.lang.String-

関連の記事

Java 文字列の一部を取得するサンプル(substring)
Java 文字列を置換する(replace/replaceAll/replaceFirst)
Java 文字列を分割して配列にする(split)
Java 文字列の始まり/終わりを確認(startsWith/endsWith)

△上に戻る