Java|indexOfメソッドでString型文字列を検索する

indexOfメソッドの使い方プログラミングの知識
プログラミングの知識

StringクラスindexOfメソッドを使うことで、文字列(String型)から文字(String型・Char型)を探すことができます。

それぞれの処理について見ていきましょう。

スポンサーリンク

indexOfメソッドの書式

indexOfメソッドは以下の様に記述します。

//indexOfメソッドの書式例(String型)
str.indexOf(文字列);
str.indexOf(文字列, 数字);

//indexOfメソッドの書式例(Char型)
str.indexOf(文字);
str.indexOf(文字, 数字);

indexOfメソッドは、指定した文字列(または文字)が最初に登場した位置を、文字列strの先頭を0としたint型の数字で返します。文字列が見つからなかった場合、戻り値は-1で返ります。

検索する内容にはString型Char型を指定することができます。空白文字を検索することも可能ですが、検索文字に「null」を入れた場合はNullPointerExceptionのエラーが発生します。

数字を指定した場合、検索開始位置が指定した数字になります。

メソッドの使用例【サンプルコード・出力結果】

メソッドの使用例をサンプルコードで紹介します。

サンプルコードを以下に示します。

public class IndexOfTest {

	public static void main(String[] args) {
		String str = "ABCABC";

		// strからAB,BAを検索する
		System.out.println(str.indexOf("AB"));
		System.out.println(str.indexOf("AB", 1));
		System.out.println(str.indexOf("BA"));

		// 全角のAを検索する
		System.out.println(str.indexOf("A"));

		// 「a 」から「 」を検索する
		System.out.println("a    ".indexOf("  "));

		// strからAを検索する
		System.out.println(str.indexOf('A'));
		System.out.println(str.indexOf('A', 1));
	}

}

サンプルコードの出力結果を以下に示します。

0 //"AB"は0番目に含まれる
3 //1番目から始めて"AB"は3番目に含まれる
-1 //"BA"は含まれてないので‐1
-1 //全角は別の文字として扱われるので-1
1 //空白も文字として扱われる
0 //1行目と同じ処理
3 //2行目と同じ処理

BAという文字列は含まれてないので‐1を返します。また、半角と全角は別文字として処理されます。

文字列に出てくる全ての文字を検索する

indexOfメソッドを普通に使うと最初に出てきた文字の位置しか返ってきません。そこでfor文を使って全ての文字を検索する方法を示します。

サンプルコードを以下に示します。

public class IndexOfTest2 {

	public static void main(String[] args) {
		String str1 = "ishikai ", str2 = "i";
		int index, sum = 0;
		System.out.println("検索元:" + str1 + " 検索文字:" + str2);
		
		for (int i = 0; i < str1.length(); i++) {
			index = str1.indexOf("i", i);
			if (index != -1) {
				System.out.println(sum + 1 + "個目:" + index);
				i = index;
				sum++;
			}
		}
		System.out.println("該当個数:" + sum);
	}

}

サンプルコードの出力結果を以下に示します。

検索元:ishikai  検索文字:i
1個目:0
2個目:3
3個目:6
該当個数:3

まとめ

今回やったことのまとめです。

ポイント
  • indexOfメソッドで指定した文字がいつ現れるか最初から検索できる
  • 文字列がない時には‐1が返される

以上がindexOfメソッドの使い方になります。検索は文字列の最初から行われることに注意しましょう。

末尾から検索を行うlastIndexOfメソッドと呼ばれるものもあるので、用途に合わせてどちらかを使うことができますね。

また、似たような処理を行うメソッドで、文字列から文字を取得するcharAtメソッドがあるので違いに注意しましょう。

スポンサーリンク
Dim雑記
タイトルとURLをコピーしました