スライドショー

Javaで文字列を検索する方法(matches・indexOf・equalsなど)

Javaで正規表現を使用して文字列を検索したい
文字列を検索するmatches・indexOf・equalsなど使い方を知りたい

JavaのStringを扱う上で、文字列の中に特定の文字列が含まれているか?確認が必要になることがあります。しかし、文字列を検索するにはさまざまな方法が存在するため、何のメソッドを使えばいいのか迷ってしまう方もいるのではないでしょうか?

今回はそんな悩みを解決するために、正規表現を使用して文字列を調べるmatchesメソッドの使い方や、文字列の完全一致、前方一致、後方一致で検索する方法などについて、わかりやすく解説します。

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の正規表現については以下の記事で詳しく解説しています!


すぐに忘れてしまうJava「正規表現」の基本・使い方早見表
更新日 : 2017年6月7日

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メソッドの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

【Java入門】indexOfとlastIndexOfで文字列を検索する(List/String)
更新日 : 2018年11月12日

前方一致と後方一致の検索

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メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説