indexOfメソッドを使用することで特定の文字列が含まれているか判定を行います。
リストだったり取得したデータが処理対象か
区別する場合によく使用されるメソッドです。
lastIndexOfを使用することで
末尾から検索を行います。
indexOfとは
対象の文字列が何文字目にあるかインデックス番号をint型で返却し、
ヒットしなかった場合「-1」が返却されるようになっています。
書き方は以下のように記載します。
文字列.indexOf("検索した文字列")
()内で指定した文字が検索対象となり、
一番初めにヒットしたインデックス番号が返却されます。
サンプルコード
public class Main {
public static void main (String[] args) {
String target = "この文字列の中を検索";
String searchWord = "の";
int index = target.indexOf(searchWord);
int lastIndex = target.lastIndexOf(searchWord);
System.out.println("先頭から" + index + "文字目");
System.out.println("末尾から" + lastIndex + "文字目");
// 存在しない場合、−1が返却されているか確認
if (target.indexOf("あ") == -1) {
System.out.println("存在しない文字列です");
}
}
}
実行結果
先頭から1文字目
末尾から5文字目
存在しない文字列です
実行結果から検索対象が見つからなかった場合に「-1」が返却されていることと
見つかった場合に何文字目に対象文字列が存在してるか確認できます。
for文と組み合わせた検索方法
indexOfメソッドやlastIndexOfメソッドとfor文を組み合わせて使用することで
対象のリストや配列から特定のものを見つけ出すことができます。
サンプルコードでは配列をループさせ対象文字列を含むか判定を行います。
public class Main {
public static void main (String[] args) {
String[] arr = ["apple", "melon", "banana"];
for (String fruit : arr) {
if (fruit.indexOf("a")) {
System.out.println("「a」が含まれるフルーツ:" + fruit);
}
}
}
実行結果
「a」が含まれるフルーツ:apple
「a」が含まれるフルーツ:banana
for文とif文を組み合わせて対象文字列の検索が行えました。実際によく使用されることが多いのでこの形はいつでもかけるようにしておくとコーディングが素早くなります。
まとめ
indexOfメソッドやlastIndexOfメソッドを使用して対象の文字列を検索できました。他にも同じようなメソッドにcontains()メソッドが存在していて、使用方法も同じような記載方法です。返り値がbooleanなのでindexOfメソッドなどとうまく使い分けて適材適所に使用しましょう。