カテゴリ: Java 更新日: 2026/02/25

JavaのStringクラスとlastIndexOfメソッドを完全解説!初心者でも理解できる文字列検索の使い方

StringのlastIndexOfメソッド
StringのlastIndexOfメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaで文字列の中から最後に現れる文字や単語を探す方法を教えてください!」

先生

「それならStringクラスのlastIndexOfメソッドを使うと、文字列の中で指定された文字や単語が最後に現れる位置を簡単に見つけられますよ。」

生徒

「具体的にはどのように使うんですか?」

先生

「では、基本的な使い方を一緒に見ていきましょう!」

1. JavaのStringクラスとは?文字列操作の基本を学ぼう

1. JavaのStringクラスとは?文字列操作の基本を学ぼう
1. JavaのStringクラスとは?文字列操作の基本を学ぼう

Javaプログラミングにおいて、名前やメッセージなどの「文字の集まり」を扱うために欠かせないのがString(ストリング)クラスです。Javaでは文字列を単なるデータとしてだけでなく、便利な機能(メソッド)をたくさん持った「オブジェクト」として扱います。

例えば、文字列の長さを調べたり、一部を切り取ったり、特定の文字がどこにあるかを探したりといった操作が、あらかじめ用意されたメソッドを呼び出すだけで簡単に行えます。

未経験者向けポイント: Javaの文字列は「0番目」から数え始めるルール(インデックス)があります。この数え方を理解しておくと、この後の検索メソッドの理解がぐっと深まります。

今回詳しく解説するlastIndexOfメソッドも、このStringクラスに含まれる強力なツールの一つです。文章の「後ろ側」から特定の単語を探したいときに非常に重宝します。まずは、Stringクラスでどんなことができるのか、簡単なイメージをプログラムで見てみましょう。


public class StringBasicExample {
    public static void main(String[] args) {
        // 文字列を変数に代入します
        String message = "Welcome to Java!";
        
        // 文字列の長さを表示する(lengthメソッド)
        System.out.println("文字数: " + message.length());
        
        // すべて大文字に変換してみる(toUpperCaseメソッド)
        System.out.println("大文字: " + message.toUpperCase());
        
        // Stringクラスには、このように便利な機能が詰まっています!
    }
}

このように、Stringクラスを使いこなすことは、Java習得への第一歩となります。次に、本題である「特定の文字を後ろから探す」具体的な方法を見ていきましょう。

2. lastIndexOfメソッドの使い方:末尾から検索する方法

2. lastIndexOfメソッドの使い方:末尾から検索する方法
2. lastIndexOfメソッドの使い方:末尾から検索する方法

Javaで「特定の文字が最後にどこに出てくるか」を知りたい時に便利なのが、lastIndexOfメソッドです。通常の検索(indexOf)が先頭から探すのに対し、このメソッドは文字列の「後ろ(末尾)」から逆方向に検索を行います。

例えば、ファイルのパスから拡張子だけを取り出したい時や、文章の最後に使われている特定の単語を見つけたい時に非常に役立ちます。まずは、初心者の方でも使いやすい4つの書き方(構文)を見てみましょう。

  • public int lastIndexOf(String str):指定した文字列が最後に出現する位置を返す
  • public int lastIndexOf(char ch):指定した1文字が最後に出現する位置を返す
  • public int lastIndexOf(String str, int fromIndex):指定した位置から逆方向に検索する
  • public int lastIndexOf(char ch, int fromIndex):指定した位置から1文字を逆方向に検索する

このメソッドは、検索対象が見つかった場合はそのインデックス番号(0から始まる位置)を返し、もし見つからなかった場合には-1を返します。プログラミング未経験の方でも分かりやすいように、具体的なサンプルコードで確認してみましょう。


public class LastIndexOfExample {
    public static void main(String[] args) {
        // 検索対象の文章を用意します
        String text = "Java is a popular programming language. Java is powerful.";

        // 「Java」という単語が最後に現れる位置を探します
        int lastIndex = text.lastIndexOf("Java");

        // 結果を表示します
        System.out.println("元の文章: " + text);
        System.out.println("「Java」が最後に出現する位置: " + lastIndex);

        // 存在しない文字を検索した場合は -1 が返ってきます
        int NotFoundIndex = text.lastIndexOf("Python");
        System.out.println("「Python」を検索した結果: " + NotFoundIndex);
    }
}

このプログラムを実行すると、コンソールには以下のような結果が表示されます。


元の文章: Java is a popular programming language. Java is powerful.
「Java」が最後に出現する位置: 40
「Python」を検索した結果: -1

ここがポイント!
検索結果の「40」という数字は、文字列の先頭を「0」として数え始めた時の位置です。最初の「Java」は0番目ですが、後ろから探すと40番目にある「Java」が先に見つかるため、このような結果になります。 もし、ユーザーが入力したデータの中に「@」や「.(ドット)」がどこにあるかを確認したい場合など、実務でも頻繁に登場する重要なテクニックです。

3. lastIndexOfメソッドを使うときの注意点

3. lastIndexOfメソッドを使うときの注意点
3. lastIndexOfメソッドを使うときの注意点

lastIndexOfメソッドを使用する際の注意点を以下に挙げます。

  • 検索は大文字と小文字を区別します。
  • 検索範囲を指定しない場合は、文字列全体が検索対象となります。
  • 文字列が見つからない場合は-1を返します。

以下に、安全に使用する例を示します。


public class SafeLastIndexOfExample {
    public static void main(String[] args) {
        String text = "Java is fun, but Java can be challenging.";
        int lastIndex = text.lastIndexOf("Python");

        if (lastIndex != -1) {
            System.out.println("指定された文字列は最後にインデックス " + lastIndex + " にあります。");
        } else {
            System.out.println("指定された文字列は見つかりませんでした。");
        }
    }
}

このプログラムでは、見つからない場合に適切なメッセージを表示します。


指定された文字列は見つかりませんでした。

4. lastIndexOfメソッドの応用例

4. lastIndexOfメソッドの応用例
4. lastIndexOfメソッドの応用例

以下は、lastIndexOfメソッドを使って特定の単語がすべて出現する箇所を逆順で検索する例です。


public class ReverseSearchExample {
    public static void main(String[] args) {
        String text = "Java is powerful. Java is versatile. Java is everywhere.";
        String keyword = "Java";
        int index = text.lastIndexOf(keyword);

        while (index != -1) {
            System.out.println("キーワード '" + keyword + "' はインデックス " + index + " にあります。");
            index = text.lastIndexOf(keyword, index - 1);
        }
    }
}

このプログラムを実行すると、次のような結果が得られます。


キーワード 'Java' はインデックス 43 にあります。
キーワード 'Java' はインデックス 24 にあります。
キーワード 'Java' はインデックス 0 にあります。

このように、lastIndexOfメソッドを繰り返し使用することで、文字列内の特定の単語の出現箇所を逆順に検索することができます。

5. よくある質問と回答

5. よくある質問と回答
5. よくある質問と回答

Q: lastIndexOfメソッドで部分一致を検索できますか?

A: いいえ、lastIndexOfメソッドは完全一致の検索に使用されます。部分一致を検索する場合は、正規表現やcontainsメソッドを使用することを検討してください。

6. fromIndexを使った検索範囲の指定方法

6. fromIndexを使った検索範囲の指定方法
6. fromIndexを使った検索範囲の指定方法

lastIndexOfメソッドには、検索を開始する位置を指定できるオーバーロードも用意されています。これがlastIndexOf(String str, int fromIndex)lastIndexOf(char ch, int fromIndex)です。

このメソッドを使うことで、「文字列のここまでの範囲だけを対象にして最後の出現位置を調べる」といった柔軟な検索が可能になります。特に長い文章やログデータを扱う場合に役立ちます。

例えば、ある位置より前の範囲だけを対象に検索したい場合、次のように書きます。


public class FromIndexExample {
    public static void main(String[] args) {
        String text = "apple banana apple orange apple";
        
        // インデックス20までの範囲で最後の"apple"を検索
        int index = text.lastIndexOf("apple", 20);
        
        System.out.println("検索結果のインデックス: " + index);
    }
}

このプログラムを実行すると、指定した範囲内で最後に出現する文字列の位置が表示されます。


検索結果のインデックス: 13

検索範囲を明確に制御することで、不要な部分を対象外にできるため、処理効率やロジックの明確化につながります。Javaの文字列検索をより高度に扱いたい場合は、このfromIndex付きメソッドの使い方も覚えておきましょう。

7. indexOfとの違いを理解しよう

7. indexOfとの違いを理解しよう
7. indexOfとの違いを理解しよう

lastIndexOfとよく比較されるメソッドにindexOfがあります。どちらも文字列検索に使われますが、検索方向が異なります。

  • indexOfは先頭から検索し、最初に見つかった位置を返します。
  • lastIndexOfは末尾側から検索し、最後に見つかった位置を返します。

この違いを理解していないと、意図しない検索結果になることがあります。以下のプログラムで比較してみましょう。


public class IndexComparisonExample {
    public static void main(String[] args) {
        String text = "cat dog cat bird cat";
        
        int firstIndex = text.indexOf("cat");
        int lastIndex = text.lastIndexOf("cat");
        
        System.out.println("最初のcatの位置: " + firstIndex);
        System.out.println("最後のcatの位置: " + lastIndex);
    }
}

実行結果は次の通りです。


最初のcatの位置: 0
最後のcatの位置: 17

このように、同じキーワードでも検索方法によって結果が変わります。JavaのStringクラスを正しく使い分けることが、正確な文字列処理の第一歩です。

8. 実務で役立つlastIndexOfの活用例

8. 実務で役立つlastIndexOfの活用例
8. 実務で役立つlastIndexOfの活用例

lastIndexOfメソッドは、実際の開発現場でもさまざまな場面で利用されます。例えば、ファイルパスから拡張子を取得する処理や、メールアドレスのドメイン部分を抽出する処理などに応用できます。

ここでは、ファイル名から拡張子を取り出す簡単な例を紹介します。


public class FileExtensionExample {
    public static void main(String[] args) {
        String fileName = "report.final.version.pdf";
        
        int dotIndex = fileName.lastIndexOf(".");
        
        if (dotIndex != -1) {
            String extension = fileName.substring(dotIndex + 1);
            System.out.println("拡張子: " + extension);
        } else {
            System.out.println("拡張子が見つかりませんでした。");
        }
    }
}

実行結果は以下の通りです。


拡張子: pdf

このように、lastIndexOfは単なる検索メソッドではなく、文字列解析やデータ抽出の基礎として幅広く活用できます。Javaプログラミングにおける文字列処理のスキルを高めるためにも、応用例までしっかりと理解しておきましょう。

まとめ

まとめ
まとめ

本記事では、JavaのStringクラスに含まれるlastIndexOfメソッドについて詳しく解説しました。このメソッドは、文字列の中で指定された文字や単語が最後に出現する位置を特定するために非常に便利です。特に、文字列の末尾に近い部分を検索したい場合や、逆方向の検索が必要な場合に役立ちます。

使用時には大文字と小文字を区別する点や、検索対象が見つからない場合には-1を返す点に注意する必要があります。また、lastIndexOfメソッドは指定したインデックスから逆方向に検索を開始できるため、柔軟な検索処理が可能です。

以下は、さらに実践的な使用例です。


public class AdvancedLastIndexOfExample {
    public static void main(String[] args) {
        String text = "This is a test. Testing is essential. Test cases are important.";
        String keyword = "test";
        int index = text.lastIndexOf(keyword);

        while (index != -1) {
            int contextStart = Math.max(0, index - 10);
            int contextEnd = Math.min(text.length(), index + keyword.length() + 10);
            System.out.println("キーワード '" + keyword + "' の周辺文脈: " + text.substring(contextStart, contextEnd));
            index = text.lastIndexOf(keyword, index - 1);
        }
    }
}

このプログラムを実行すると、以下のような結果が得られます。


キーワード 'test' の周辺文脈: This is a test. Testing
キーワード 'test' の周辺文脈: Testing is essential. Test
キーワード 'test' の周辺文脈: essential. Test cases are

このように、文字列検索の際に周辺文脈を表示する機能を追加することで、より詳細なデータ解析やエラーログの調査などに応用できます。

先生と生徒の振り返り会話

生徒

lastIndexOfメソッドを使うと、文字列の末尾に近い箇所を簡単に検索できるのが便利ですね!」

先生

「その通りです。検索範囲を指定することで、柔軟な検索が可能になります。」

生徒

「逆方向に検索できることも知りました!これで、ログデータの解析やデバッグに役立てられそうです。」

先生

「今回学んだ内容を活かして、実際のプログラムでどんどん試してみてください。他の文字列操作メソッドとも組み合わせるとさらに便利になりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのStringクラスとは、プログラミング初心者にとってどのような役割を持つクラスなのですか?

JavaのStringクラスは、プログラム内で「文字列」を扱うための非常に重要かつ基本的なクラスです。Javaプログラミングにおいては、文字の集まりを一つのデータとして操作する機会が頻繁にあります。Stringクラスには、文字列の長さを調べたり、特定の文字を検索したり、文字列を分割したりといった、便利なメソッド(機能)がたくさん用意されています。プログラミング初心者がJavaを学習する際、最初にマスターすべき最も使用頻度の高いクラスの一つと言えます。今回の記事で紹介した検索機能も、このStringクラスが持つ強力な標準機能の一部です。
カテゴリの一覧へ
新着記事
New1
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
更新記事
New2
Spring
Springの@Securedアノテーションの使い方を完全ガイド!初心者でもわかるセキュリティ設定
更新記事
New3
Java
JavaのStringクラスとlastIndexOfメソッドを完全解説!初心者でも理解できる文字列検索の使い方
更新記事
New4
Java
JavaのInterruptedExceptionを完全ガイド!初心者でも理解できるスレッド制御と例外処理
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.3
Java&Spring記事人気No3
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.4
Java&Spring記事人気No4
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.5
Java&Spring記事人気No5
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Java
JavaのInterruptedExceptionを完全ガイド!初心者でも理解できるスレッド制御と例外処理
No.8
Java&Spring記事人気No8
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門