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

JavaのStringクラスのsubstringメソッドを完全解説!初心者でもわかる文字列操作

substringメソッド
substringメソッド

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

生徒

「Javaで文字列の一部だけを取り出す方法ってありますか?」

先生

「良い質問ですね!Javaでは、Stringクラスのsubstringメソッドを使って、簡単に文字列の一部分を取り出すことができます。」

生徒

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

先生

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

1. substringメソッドとは?

「1. substringメソッドとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. substringメソッドとは?
1. substringメソッドとは?

substringは、文字列の「必要な部分だけ」を取り出すための基本メソッドです。文章の冒頭だけ見せたい、特定の位置から後ろを切り出したい、といった日常的な処理で活躍します。文字の数え方は左から順に「0, 1, 2, …」と数える0始まりで、取り出しの終わり側は「その直前まで(終端は含まない)」というルールです。この2点を押さえるだけで、substringの多くの操作は迷わず書けるようになります。

まずは雰囲気をつかむために、よくある挨拶文から一部を抜き出してみましょう。前半だけ取りたい、カンマ以降を丸ごと欲しい、といった要望を数行で表現できます。


public class IntroSubstring {
    public static void main(String[] args) {
        String text = "Hello, World!";
        // 先頭(0)から5文字分 → "Hello"
        String head = text.substring(0, 5);
        // 7文字目(カンマと空白の直後)から最後まで → "World!"
        String tail = text.substring(7);

        System.out.println(head);
        System.out.println(tail);
    }
}

Hello
World!

このように、substring(開始位置, 終了位置)は「開始位置を含み、終了位置は含まない」区間を取り出します。終了位置を省略してsubstring(開始位置)と書けば、そこから文字列の終わりまでを一気に取得できます。たとえば「東京都千代田区」という文字列で「東京都」だけ取りたい場合はsubstring(0, 3)、後半の「千代田区」を取りたい場合はsubstring(3)のように書けます。まずは「0から数える」「終わりは含まない」を指でなぞりながら確認してみるのがおすすめです。

2. substringメソッドの基本的な使い方

2. substringメソッドの基本的な使い方
2. substringメソッドの基本的な使い方

substringには2種類の呼び出し方があります。どちらも「左から0,1,2…と数える0始まり」で位置を指定します。もう一つ大切なルールは、substring(開始, 終了)の「終了」は含まれないという点です。つまり「開始を含み、終了の直前まで」を切り出します。まずはこの2点をしっかり押さえましょう。

  • substring(int beginIndex)beginIndexから最後までを取得します。
  • substring(int beginIndex, int endIndex)beginIndex(含む)〜 endIndex(含まない)を取得します。

最小の例から確認します。インデックスのイメージをコメントで示しています。


public class BasicSubstring {
    public static void main(String[] args) {
        String s = "Hello, World!";
        // インデックス:  0 1 2 3 4 5 6 7 8 9 10 11 12
        // 文字:           H e l l o ,   W o  r  l  d  !

        // 1) 先頭から5文字(0〜5の手前) → "Hello"
        String a = s.substring(0, 5);

        // 2) 7文字目から最後まで(7〜終わり) → "World!"
        String b = s.substring(7);

        // 3) カンマと空白(5,6)を除いた "Hello" と "World" の間だけ → " World"
        String c = s.substring(5, 12); // 5は「,」、12は「!」の直前まで

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

Hello
World!
, World

日本語の文字列でも同じ感覚で扱えます。たとえば「東京都千代田区」を「東京都」「千代田区」に分けたい場合は、見たい位置で素直に切り分けます。


public class JapaneseSubstring {
    public static void main(String[] args) {
        String place = "東京都千代田区";
        // 0〜3の手前 → "東京都"
        String pref = place.substring(0, 3);
        // 3から最後まで → "千代田区"
        String city = place.substring(3);

        System.out.println(pref);
        System.out.println(city);
    }
}

東京都
千代田区

「どこからどこまで」を毎回数えるのが不安な場合は、次の2つのコツが役立ちます。

  • 終了は含まれないので、ちょうど区切りたい位置を「終点」として指定すると覚えやすい(例:0〜5で先頭5文字)。
  • 開始と終了が同じだと空文字(長さ0)が返るので、「何も取らない」指定が可能。

もう少しだけ応用例です。名前の苗字と名前を、固定の区切り位置で抜き出します(実務では可変長のこともありますが、ここでは基本操作の練習として固定で扱います)。


public class NameSplitFixed {
    public static void main(String[] args) {
        String full = "山田太郎";
        // 苗字は先頭2文字、名前は3文字目以降という前提
        String family = full.substring(0, 2);
        String given  = full.substring(2);
        System.out.println(family + " / " + given); // → 山田 / 太郎
    }
}

山田 / 太郎

ここまでのポイントをまとめると、「0始まり」「終了は含まない」「開始だけ指定すれば末尾まで」がsubstringの基本です。まずは短い単語や地名で手を動かして、狙った位置で切り出せる感覚をつかみましょう。

3. substringメソッドの例

3. substringメソッドの例
3. substringメソッドの例

ここでは、substringの典型パターンを段階的に試します。まずは英字の例、そのあと日本語や実用寄りの例(氏名の切り出し・マスク、拡張子の取得)で「どこからどこまで」を体で覚えましょう。すべて0始まり・終了は含まないというルールに沿っています。

基本:先頭の一部と途中から末尾まで


public class SubstringExampleBasic {
    public static void main(String[] args) {
        String msg = "Hello, World!";
        // 0〜5の手前 → 先頭5文字
        String head = msg.substring(0, 5);    // "Hello"
        // 7文字目から最後まで
        String tail = msg.substring(7);       // "World!"

        System.out.println(head);
        System.out.println(tail);
    }
}

Hello
World!

「終了は含まない」ので、(0, 5)は0〜4文字目を意味します。(7)のように開始だけ渡すと、その位置から末尾まで一気に取得できます。

日本語:地名を前半・後半に分ける


public class SubstringExampleJP {
    public static void main(String[] args) {
        String place = "東京都千代田区";
        String pref  = place.substring(0, 3); // "東京都"
        String ward  = place.substring(3);    // "千代田区"
        System.out.println(pref);
        System.out.println(ward);
    }
}

東京都
千代田区

固定の区切り位置がわかっていれば、インデックスを素直に指定するだけでOKです。

実用1:氏名の一部マスク(先頭1文字だけ見せる)


public class SubstringMaskName {
    public static void main(String[] args) {
        String name = "山田太郎";
        // 先頭1文字 + 残りを"*"で埋める
        String head = name.substring(0, 1);   // "山"
        String masked = head + "***";
        System.out.println(masked);           // "山***"(表示用の簡易例)
    }
}

山***

「先頭だけ取り出す→後ろを伏せ字にする」という定番処理も、substringでシンプルに書けます。

実用2:ファイル名から拡張子を取り出す


public class SubstringFileExt {
    public static void main(String[] args) {
        String filename = "report_2025_final.pdf";
        int dot = filename.lastIndexOf(".");
        // ドットが見つかったら、その直後から末尾を拡張子として取得
        String ext = (dot >= 0) ? filename.substring(dot + 1) : "";
        System.out.println(ext); // "pdf"
    }
}

pdf

拡張子のように「区切り文字の直後から末尾まで」を取りたい場面は多いです。位置がわかれば、substring(位置+1)で一直線に取り出せます。

実用3:固定幅のIDから部分を抽出


public class SubstringFixedId {
    public static void main(String[] args) {
        String id = "USR-2025-000123";
        // "USR"部分
        String prefix = id.substring(0, 3);
        // 年(4文字)は 4〜8の手前(ハイフン含むので位置を数えて指定)
        String year   = id.substring(4, 8);
        // 末尾の連番は最後のハイフンの直後から
        int lastDash  = id.lastIndexOf("-");
        String serial = id.substring(lastDash + 1);
        System.out.println(prefix + " / " + year + " / " + serial);
    }
}

USR / 2025 / 000123

この章のポイントは「0始まり・終了は含まない・開始だけ指定で末尾まで」。まずは短い文字列で手を動かし、欲しい範囲を正確に切り出せる感覚を身につけましょう。

4. substringの使いどころと注意点

「4. substringの使いどころと注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. substringの使いどころと注意点
4. substringの使いどころと注意点

プログラミングでsubstringメソッドを使うと、ファイル名の一部を取り出したり、URLのドメイン部分を抽出したりと、様々な場面で活用できます。

ただし、注意すべき点として、substringメソッドで無効なインデックスを指定するとStringIndexOutOfBoundsExceptionというエラーが発生します。例えば、文字列の長さを超えたインデックスを指定するとエラーになります。こうしたエラーを防ぐため、事前に文字列の長さを確認することが重要です。


public class SafeSubstringExample {
    public static void main(String[] args) {
        String text = "Java Programming";
        int length = text.length();

        if (length >= 10) {
            System.out.println(text.substring(0, 10)); // 文字列が10文字以上ある場合
        } else {
            System.out.println("文字列が短すぎます。");
        }
    }
}

このように、length()メソッドと組み合わせることで、安全にsubstringを使用することができます。

5. まとめ

5. まとめ
5. まとめ

本記事では、JavaのStringクラスのsubstringメソッドについて詳しく解説しました。このメソッドを使うことで、文字列の一部分を簡単に抽出できることがわかりました。例えば、ファイル名やURLの一部を取り出したり、文字列データを効率的に操作することが可能です。基本的な使い方から、エラー回避のための注意点まで解説しましたが、初心者の方でも応用できるように理解を深めることが重要です。

特に、substringメソッドは日常的なプログラムにおいて多くのシーンで活躍します。文字列の長さを超えるインデックスを指定するとエラーになるため、length()メソッドを活用して安全に操作する方法を習得しましょう。

また、この記事で紹介したコード例を自分で試してみることで、実際にどのように動作するのかを確認できます。実践を通して学ぶことで、文字列操作に関する知識をより深めることができます。

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

生徒

substringメソッドについてよくわかりました!ファイル名や文字列の一部を取り出すのに便利そうですね。」

先生

「その通りです。例えば、ユーザーが入力したテキストの特定部分を取り出すといった実用的なシナリオで役立ちますね。」

生徒

「でも、インデックスを間違えるとエラーになる可能性があるんですよね?」

先生

「そうです。だからこそ、length()メソッドで文字列の長さを確認したり、条件分岐を使って安全に処理することが重要です。」

生徒

「わかりました!エラーを防ぐためのコードも実践してみます。」

先生

「いいですね。substringをマスターすれば、文字列処理が一層楽しくなりますよ。」

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

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

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

Javaのsubstringメソッドとは何ですか?

Javaのsubstringメソッドは、文字列の一部を切り出すためのメソッドです。開始位置や終了位置を指定することで、特定の部分文字列を取得できます。

substringメソッドの使い方にはどのような種類がありますか?

substringメソッドには、開始位置だけを指定するものと、開始位置と終了位置を指定するものの2種類があります。それぞれ、文字列全体や部分的な文字列を抽出するのに適しています。

substringメソッドでエラーが発生する場合の原因は何ですか?

主な原因は、指定したインデックスが文字列の長さを超えていることです。この場合、StringIndexOutOfBoundsExceptionというエラーが発生します。

substringメソッドを安全に使うにはどうすればいいですか?

substringメソッドを使う前にlengthメソッドで文字列の長さを確認し、インデックスが範囲内かどうかをチェックすることで、安全に使用できます。

ファイル名やURLから特定の部分を取り出すにはsubstringメソッドをどう使いますか?

ファイル名の拡張子を取り出したい場合は、"."の位置を取得してsubstringを使うことができます。同様に、URLのドメイン部分も指定したインデックスを使って切り出せます。

substringメソッドを使うとき、終了位置の文字は含まれますか?

いいえ、終了位置の文字は含まれません。substringメソッドでは、開始位置の文字は含まれますが、終了位置のインデックスに対応する文字は含まれません。

substringメソッドで文字列の末尾まで取得するにはどうすればいいですか?

開始位置だけを指定してsubstringメソッドを使うと、その位置から文字列の末尾までを取得できます。たとえば、substring(7)と指定すると、7番目以降のすべての文字が取得されます。

substringメソッドとlengthメソッドを組み合わせると何ができますか?

lengthメソッドを使って文字列の長さを確認し、substringメソッドのインデックス範囲を正しく設定することで、安全に部分文字列を抽出できます。

substringメソッドを使うとき、どのような注意点がありますか?

インデックスが範囲外にならないように、文字列の長さを超えた値を指定しないことが重要です。また、負の値を指定することも避けましょう。

Java以外のプログラミング言語にもsubstringメソッドのようなものはありますか?

はい、多くのプログラミング言語には文字列の部分抽出を行う方法が用意されています。例えば、Pythonではスライス構文を使って同様の処理が可能です。
カテゴリの一覧へ
新着記事
New1
Spring
Spring Securityの新標準!SecurityFilterChainとHttpSecurity DSLの書き方を初心者向けに解説
更新記事
New2
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
更新記事
New3
Servlet
JavaのGenericServletクラスのgetInitParameterNamesメソッドを徹底解説!初心者でもわかる初期化パラメータの取得方法
更新記事
New4
JSP
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.6
Java&Spring記事人気No6
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.7
Java&Spring記事人気No7
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.8
Java&Spring記事人気No8
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門