Java の String クラスには文字列を検索するためのメソッドがいくつか組み込まれています。ここでは、文字列検索のメソッド indexOf() と lastIndexOf() の使い方について説明します。
文字列を検索する:indexOf()
indexOf() の構文は以下の通りです。
1 |
対象の文字列.indexOf(検索する文字列) |
indexOf() は対象の文字列から、引数で指定した文字列を検索します。指定した文字列が見つかった場合は、その文字列が出現する先頭の位置を返します。ただし、位置は 0 から開始されます。もし見つからなかった場合は、-1 を返します。
以下は indexOf() を用いたサンプルです。
1 2 3 4 5 6 7 8 |
String str1 = "abc123abc123"; String str2 = "123"; int result = str1.indexOf(str2); if (result != -1) { System.out.println(result); // 3 } else { System.out.println(str2 + "は見つかりませんでした"); } |
上のプログラムでは、文字列 abc123abc123 の中から 123 という文字列があるか検索しています。123 という文字列は先頭から数えて4番目の位置に見つかるので、 indexOf() は 3 を返します。
indexOf() は見つからなかったときに -1 を返すので、見つからない場合の判定として -1 と比較しています。
後方から文字列を検索する:lastIndexOf()
先ほどの indexOf() は先頭から検索するのに対して、lastIndexOf() は後方から文字列を検索します。
1 |
対象の文字列.lastIndexOf(検索する文字列) |
lastIndexOf() は対象の文字列から、引数で指定した文字列を後方から検索します。指定した文字列が見つかった場合は、その文字列が出現する先頭の位置を返します。ただし、位置は 0 から開始されます。もし見つからなかった場合は、-1 を返します。
以下は、lastIndexOf() を使用したサンプルです。
1 2 3 4 5 6 7 8 |
String str1 = "abc123abc123"; String str2 = "123"; int result = str1.lastIndexOf(str2); if (result != -1) { System.out.println(result); // 9 } else { System.out.println(str2 + "は見つかりませんでした"); } |
上のプログラムでは、文字列 abc123abc123 の中から 123 という文字列があるか後方から検索しています。lastIndexOf() は末尾から検索するので、この例ではより後方にある2番目の 123 という文字列の位置を返します。結果として、10番目に見つかるので 9 が表示されます。