カテゴリ: Java 更新日: 2025/12/25

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

substringメソッド
substringメソッド

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

生徒

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

先生

「良い質問ですね!Javaでは、Stringクラスの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メソッドを使用して文字列の一部分を抽出する例です。


public class SubstringExample {
    public static void main(String[] args) {
        String message = "Hello, World!";
        
        // 5文字目から最後までを取得
        String sub1 = message.substring(7);
        System.out.println(sub1); // 出力: World!

        // 0文字目から5文字目までを取得
        String sub2 = message.substring(0, 5);
        System.out.println(sub2); // 出力: Hello
    }
}

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


World!
Hello

最初のsubstring(7)は、文字列の7番目の位置から最後までを取得しています。一方、substring(0, 5)は、0番目から4番目の文字までを取り出しています。こうして特定の部分文字列を簡単に抽出できます。

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ではスライス構文を使って同様の処理が可能です。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法