文字列の中にある文字を検索しようとしたとき、ふつうは前方から検索します。
この場合、検索しようとした文字が複数あると、最初の文字にヒットしてしまいうまく検索できません(; ・`д・´)
たとえば、ファイル名を取得したい場合等では、ディレクトリの区切り文字(/、または、\)で検索して、ファイル名だけを取り出したりしますが、ファイルが格納されているディレクトリの階層が深いと後ろから検索したくなります。
今回は、文字列を前方から、後方からそれぞれ検索をしてみます。
文字列を前方と後方から探すサンプル
「あ」と「か」を前方からと後方からそれぞれ検索します。
また、検索した結果、文字列の位置を標準出力します。
1 2 3 4 5 6 7 8 9 10 11 12 | public class StringIndexOfTest { public static void main(String[] args) { String str = "あいうえおかきくけこあいうえおかきくけこ"; //前方から文字を探す System.out.println("「あ」は、" + str.indexOf("あ") + "番目だよ♪"); System.out.println("「か」は、" + str.indexOf("か") + "番目だよ♪"); //後方から文字を探す System.out.println("「あ」は、" + str.lastIndexOf("あ") + "番目だよ♪"); System.out.println("「か」は、" + str.lastIndexOf("か") + "番目だよ♪"); } } |
実行結果
前方、後方それぞれから「あ」と「か」の文字が見つかった位置が標準出力されます。
1 2 3 4 | 「あ」は、0番目だよ♪ 「か」は、5番目だよ♪ 「あ」は、10番目だよ♪ 「か」は、15番目だよ♪ |
サンプルの解説
前方から文字列を検索したい場合、String#indexOf(String)を使います。
後方から文字列を検索したい場合、String#lastIndexOf(String)を使います。
それぞれ、前方または後方から探したい文字を探して、はじめて見つかった文字の位置(前方からの位置)を返します。