こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Javaで指定した文字を検索して最初に出現するインデックスを返すString.indexOfメソッドについて
- String.indexOfメソッドとは
- String.indexOfメソッドを使ったサンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
| OS | Windows10 | 
|---|---|
| IntelliJ IDEAのエディション | Community(無料版) | 
| IntelliJ IDEAのバージョン | 2021.3.2 | 
| プロジェクト | Javaプロジェクト | 
| SDK | Oracle OpenJDK version17.0.2 | 
Javaを動かすためにIntelliJ IDEAを使っています。
IntelliJ IDEAのインストールは、下の記事をご参考ください。
String.indexOfメソッドとは
String.indexOfメソッドとは、文字列から引数で指定されている文字列を検索して最初に出現するインデックスを返すメソッドです。
String.indexOfメソッドは使い方が
- パターン1:検索文字のみ指定
- パターン2:検索文字と検索の開始位置を指定
の合計2パターンあります。
それぞれ解説します。
パターン1:検索文字のみ指定
使い方サンプルは以下です。
| 1 2 | String sample = "hogehoge"; int result = sample.indexOf("og"); | 
検索文字のみ指定してString.indexOfメソッドを使った場合、引数に指定した文字が最初に出現したインデックスを返します。
上記の例だと、変数resultには文字列「hogehoge」で「og」が最初に出現する
| 1 | 1 | 
が返されます。

パターン2:検索文字と検索の開始位置を指定
使い方サンプルは以下です。
| 1 2 | String sample = "hogehoge"; int result = sample.indexOf("og", 3); | 
検索文字と検索の開始位置を指定してString.indexOfメソッドを使った場合、第二引数の開始位置以降に第一引数で指定した文字が最初に出現したインデックスを返します。
上記の例だと、変数resultには文字列「hogehoge」でインデックスが3以降で「og」が最初に出現する
| 1 | 5 | 
が返されます。

開始位置を文字列の長さより大きい数を指定した場合、-1が返されます。
では、次の章で実際に使ってみます。
String.indexOfメソッドを解説するプログラムの概要
String.indexOfメソッドを解説するプログラムでは、同じ文字列に対して
- 検索文字のみ指定
- 検索文字と検索の開始位置を指定
でそれぞれString.indexOfメソッドを使って、結果を表示させます。
解説で使うJavaプログラムは、Sampleプロジェクトのsampleパッケージ内にある、とします。

Javaサンプルプログラム
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package sample; public class Sample {     public static void main(String[] args) {         String hello = "HelloWorld";         System.out.println("検索する文字列:" + hello);         System.out.println("■パターン1:検索文字のみ指定した場合");         String searchStr1 = "o";         int searchStr1Index = hello.indexOf(searchStr1);         if (searchStr1Index != -1) {             System.out.println(searchStr1 + "が最初に出現するインデックス:" + searchStr1Index);         } else {             System.out.println(searchStr1 + "の文字は" + hello + "に存在しない");         }         String searchStr2 = "xyz";         int searchStr2Index = hello.indexOf(searchStr2);         if (searchStr2Index != -1) {             System.out.println(searchStr2 + "が最初に出現するインデックス:" + searchStr2Index);         } else {             System.out.println(searchStr2 + "の文字は" + hello + "に存在しない");         }         System.out.println("■パターン2:検索文字と検索の開始位置を指定した場合");         String searchStr3 = "o";         int searchIndex3 = 5;         int searchStr3Index = hello.indexOf(searchStr3, searchIndex3);         if (searchStr3Index != -1) {             System.out.println(searchStr3 + "が" + searchIndex3 +"番目以降で出現するインデックス:" + searchStr3Index);         } else {             System.out.println(searchStr3 + "の文字は" + searchIndex3 + "番目以降で" + hello + "に存在しない");         }         String searchStr4 = "ll";         int searchIndex4 = 4;         int searchStr4Index = hello.indexOf(searchStr4, searchIndex4);         if (searchStr4Index != -1) {             System.out.println(searchStr4 + "が" + searchIndex4 +"番目以降で出現するインデックス:" + searchStr4Index);         } else {             System.out.println(searchStr4 + "の文字は" + searchIndex4 + "番目以降で" + hello + "に存在しない");         }     } } | 
実行結果
Javaプログラムを実行します。
実行のやり方は
- プログラムを右クリックして実行
- 実行タブから実行
- ガターから実行
の3種類あるので、いずれかで実行します。
詳しい解説は以下の記事をご参考ください。

| 1 2 3 4 5 6 7 | 検索する文字列:HelloWorld ■パターン1:検索文字のみ指定した場合 oが最初に出現するインデックス:4 xyzの文字はHelloWorldに存在しない ■パターン2:検索文字と検索の開始位置を指定した場合 oが5番目以降で出現するインデックス:6 llの文字は4番目以降でHelloWorldに存在しない | 
- 検索文字のみ指定
- 検索文字と検索の開始位置を指定
のそれぞれで指定した文字列があるかどうかの判定ができていることが確認できました。
まとめ:String.indexOfメソッドを使ってみよう!
以上がJavaのString.indexOfメソッドについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
 
  
  
  
  
コメント