文字列を検索するmatches・indexOf・equalsなど使い方を知りたい
JavaのStringを扱う上で、文字列の中に特定の文字列が含まれているか?確認が必要になることがあります。しかし、文字列を検索するにはさまざまな方法が存在するため、何のメソッドを使えばいいのか迷ってしまう方もいるのではないでしょうか?
今回はそんな悩みを解決するために、正規表現を使用して文字列を調べるmatchesメソッドの使い方や、文字列の完全一致、前方一致、後方一致で検索する方法などについて、わかりやすく解説します。
なお、Javaの記事については、こちらにまとめています。
matchesで正規表現による検索
matchesメソッドは、正規表現で指定した部分文字列が完全に一致するか?調べるために使用します。
public boolean matches(String regex);
regex:指定した文字列との一致を判定するための正規表現
引数として指定した文字列が一致すれば、trueを返します。正規表現は、指定した文字列と一緒にダブルクォーテーションで囲む必要があります。
以下にmatchesメソッドの基本的な使い方を紹介します。
public class Main { public static void main(String[] args) throws Exception { //String型を宣言 String str = "appleorangemelon"; if(str.matches(".*orange.*")) { System.out.println("orange matched"); } } }
実行結果
orange matched
サンプルではString型を宣言して文字列を設定し、matchesメソッドを使用して文字列strの中に正規表現「”.*”」を指定して「orange」の文字列が存在するか、確認しています。
指定した文字列の前後に正規表現「”.*”」を指定することによって、「orange」を含む何らかの文字列が存在するかを確認することが可能です。
Javaの正規表現については以下の記事で詳しく解説しています!
indexOfでインデックスを検索
indexOfメソッドは、対象の文字列から指定した部分文字列を検索します。部分文字列が見つかった場合は、文字列の先頭を0としたインデックス番号を返します。
indexOfメソッドで文字列を検索する方法を次のプログラムで確認してみましょう。
public class Main { public static void main(String[] args) { String str1 = "appleorangemelon"; String str2 = "orange"; int result = str1.indexOf(str2); if (result != -1) { System.out.println(str2 + "が見つかった位置:" + result); } else { System.out.println(str2 + "は見つかりませんでした"); } } }
実行結果:
orangeが見つかった位置:5
このようにして、文字列のインデックスを取得することができました。indexOfメソッドの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。
前方一致と後方一致の検索
startsWithで前方一致
前方一致で検索するには、startsWithメソッドを使います。
startsWithメソッドの使い方を次のプログラムで確認してみましょう。
public class Main { public static void main(String[] args) { String str = "appleorangemelon"; if (str.startsWith("apple")) { System.out.println("前方一致しました"); } else { System.out.println("前方一致しませんでした"); } } }
実行結果:
前方一致しました
このようにstartsWithメソッドを使って前方一致で検索することができました。
endsWithで後方一致
後方一致で検索するには、endsWithメソッドを使います。
endsWithメソッドの使い方を次のプログラムで確認してみましょう。
public class Main { public static void main(String[] args) { String str = "appleorangemelon"; if (str.endsWith("melon")) { System.out.println("後方一致しました"); } else { System.out.println("後方一致しませんでした"); } } }
実行結果:
後方一致しました
このようにendsWithメソッドを使って後方一致で検索することができました。
equalsで文字列の完全一致を判定
上述したように、文字列の正規表現を使用した文字列の部分一致はmatchesメソッドを使用しますが、文字列全体の完全一致を調べるにはequalsメソッドを使用します。
以下にequalsメソッドの基本的な使い方を記述します。
public class Main { public static void main(String[] args) throws Exception { //String型を宣言 String str = "appleorangemelon"; //equalsで文字列の完全一致を確認 if(str.equals("appleorangemelon")) { System.out.println(str + " matched"); } } }
実行結果
appleorangemelon matched
サンプルでは、設定した文字列に対してequalsメソッドを使用して、完全一致するか確認しています。
equalsメソッドでできることは、あくまで文字列全体の完全一致です。そのため、正規表現を使用した部分的な完全一致や、指定した文字列の部分一致には対応していません。
Stringについてもっと詳しく知りたい方へ
Stringのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
matchesメソッドを使用した、正規表現での文字列の部分一致を確認する方法や注意点、文字列の完全一致を調べる方法などを説明しました。Javaで文字列の中身を調べるメソッドは、さまざまな種類がありますので、それぞれどのような役割をするのか、しっかりと覚えておきましょう!
もし、matchesメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!