String【3分Java入門】Stringで文字列が含まれているか知る方法(indexOf)増永2017/3/242017/6/7JavaのStringで文字列の中に特定の文字列が含まれているか確認したいことがあります。まとめ文字列の中に特定の文字列は含まれている?文字列の中に特定の文字列があるか、また何文字目にあるか確認するためには、indexOfメソッドを使用します。以下のサンプルでは特定の文字列の有無を取得しています。moji2.indexOf("おじいさん"));}}実行結果moji1の結果:6moji2の結果:-1indexOfメソッドを使用すると存在する場合「6」、存在しない場合「-1」が出力されました。「特定の文字列が存在しない場合、-1を返す」となり、存在の有無で処理を分岐させることができます。※Javaでは色々な順番を1からではなく0から数えます。配列も同じ考え方です。※indexOfメソッドが返す結果は「int型(数値)」です。indexOfメソッドは指定した文字数以降から確認することもできます。以下のサンプルでは特定の文字列の有無を指定の文字数以降から取得しています。moji1.indexOf("さん",4));}}実行結果moji1の結果:9indexOfメソッドに2つ目の引数「4」を指定したため先頭ではなく5文字目から検索した結果、おじい「さん」ではなく、おばあ「さん」の要素数が出力されました。lastIndexOfメソッドを使用すれば末尾から確認することもできます。以下のサンプルでは特定の文字列の有無を先頭ではなく末尾から取得しています。moji1.lastIndexOf("さん"));}}実行結果moji1の結果(先頭):3moji1の結果(末尾):9indexOfメソッドは先頭から検索したため、おじい「さん」の要素数が出力され、lastIndexOfメソッドは末尾から検索したため、おばあ「さん」の要素数が出力されました。2つを使用することで特定の文字列が複数あるかの確認ができます。便利ですね!似たメソッドindexOfメソッドに似た使い方でcontainsメソッドがあります。どんな違いがあり、どう使い分ければよいのでしょうか?以下のサンプルでは特定の文字列の存在有無をindexOfメソッドとcontainsメソッドで取得しています。moji1.contains("おじいさん"));}}実行結果indexOfの結果:6containsの結果:trueindexOfメソッドは要素数である6を出力し、containsメソッドはtrueを出力しました。条件分岐(if)を学習した方はピンときたと思います。contrainsメソッドが返す結果は「boolean型」です。使い分けとしては単純に存在有無だけであればどちらでも良いですが、存在有無+文字列を抽出したい(substring)場合はindexOfメソッドを使えば、どこから抽出すればよいかも同時にわかるためオススメです。※文字列の抽出(substring)については以下でわかりやすく説明しています。2019年5月10日indexOf/lastIndexOfで正規表現indexOfメソッドやlastIndexOfメソッドを使用する上で注意点があります。プログラムで検索といえば必ずと言っていいほど出てくる「正規表現」は使えません。(上記サンプルコードで言うと「おじいさんとおばあさん」を検索したいから「お*さん」を使う、といったこと)テストする際のバグの原因になりますので忘れないようにしたいですね。※正規表現については以下でわかりやすく説明しています。2019年4月23日まとめindexOfメソッドを使った特定の文字列の存在有無を取得する方法について説明しました。プログラミングする上で「これは想定通りの値なのか」という処理は必ず行います。想定通りでない場合思わぬ不具合が発生するからです。(最悪の場合設計からやり直し、ということもあります)チェックがしっかりしているプログラムは、とても良いプログラムだと思います。indexOfメソッドの使い方を忘れてしまったら、この記事を思い出して下さい!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。増永WEB画面を使った業務アプリを主に開発しています。基盤、DB構築の経験もあるため、プログラミングだけでなく幅広い内容をわかりやすく記事作成できるよう心がけています。