Javaコラム Javaエンジニアのためのお役立ちコラム

Java

Javaにおける文字列の検索方法とは?Javaのメソッドをご紹介

2020年10月16日
SE
文字列の検索はJavaでもできるのでしょうか?
PM
とても素朴な疑問ですが、できますよ。では詳しくみていきましょう。

文字列の検索を行うJavaのメソッド

文字列の中に特定の単語が含まれているかを調べたいことがあります。この記事では、JavaのStringクラスの以下のメソッドを使い、文字列中の部分文字列を検索する方法を説明します。

・contains
・indexOf
・lastIndexOf

文字列を含んでいるかを調べるcontains

文字列中に、指定された部分文字列を含んでいるかを調べたいときには、containsを使います。ここからは、containsの使い方を解説していきます。

containsの使い方

JavaのStringクラスのメソッドcontainsは次の形式です。
・boolean contains(CharSequence s)
引数の文字列を含んでいる場合に、trueを返す

ここで引数の型はCharSequenceとなっていますが、Javaの仕様では、StringはCharSequenceインタフェースを実装しているクラスなので、引数にString型の変数を渡してよいです。

containsを使ったコード例

containsを用いたJavaプログラムの例を示します。このプログラムでは、コマンドライン引数で調べたい文字列を指定できます。指定がないときは、デフォルト指定のappleboycatdogという文字列内にboyが部分文字列として含まれているかを調べます。

containsを使ったプログラムの実行例

上のJavaプログラムの実行結果の例を示します。他にも好きな文字列をコマンドラインで指定して、色々なパターンを試してみて下さい。

文字列内の位置もわかるindexOfとlastIndexOf

文字列内に含まれる部分文字列を検索する際、文字列内の位置も知りたい場合には、indexOfやlastIndexOfを使用します。

indexOfとlastIndexOfの使い方

JavaのStringクラスのメソッドindexOfとlastIndexOfは次の形式です。いずれの形式でも、部分文字列が出現しない場合は-1を返します。

・int indexOf(String str)
指定された部分文字列が最初に出現する位置のインデックスを返す
・int indexOf(String str, int fromIndex)
fromIndex以降で、指定された部分文字列が最初に出現する位置のインデックスを返す
・int lastIndexOf(String str)
指定された部分文字列が最後に出現する位置のインデックスを返す
・int lastIndexOf(String str, int fromIndex)
指定された部分文字列が最後に出現する位置のインデックスを返す(fromIndexから先頭方向に検索)

indexOfとlastIndexOfでは文字列の検索方向が異なるので、探したい文字列が複数回出現する場合には、異なるインデックスが得られます。

indexOf/lastIndexOfを使ったコード例

indexOf、lastIndexOfを用いたJavaプログラムの例を示します。前のプログラムと同様に、コマンドライン引数で調べたい文字列を指定できます。先頭から、最後から、またインデックス10以降の文字列で先頭または最後からの検索を行います。

indexOf/lastIndexOfを使ったプログラムの実行例

上のJavaプログラムの実行結果の例を示します。他にも様々な文字列で試してみて下さい。またインデックスも変えて確認してみましょう。

 

SE
様々な方法で検索することが可能なんですね。
PM
頻繁に使われるのはStringですね。実際に試して理解を深めていきましょう。

文字列の検索方法を理解しよう

Javaで、文字列中に特定の部分文字列が含まれているかどうかを調べる方法として、Stringクラスのメソッドcontains、indexOf、lastIndexOfを使う方法を説明しました。StringはJavaプログラム内で頻繁に使われますので、どのような応用があるか考えてみてはいかがでしょうか。


Java分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)