Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのsubstring()メソッドとは?部分文字列の取得方法を徹底解説

java.langパッケージに属するStringクラスは、文字の集合(文字列)を表すクラスです。Javaプログラム内に登場するすべての文字列リテラル(例:「abc」など)は、このクラスのインスタンスとして実装されています。

また、文字列インデックスとは、文字列内の各文字の位置を示す整数値のことで、先頭の文字が「0」から数え始めます。

substring()メソッドとは

部分文字列(substring)とは、元の文字列の一部を切り出したセグメントのことです。Stringクラスが提供するsubstring()メソッドを使うと、文字列から任意の範囲の部分文字列を簡単に取得できます。

このメソッドには、以下の2つのオーバーロード(バリエーション)が用意されています。

  • substring(int beginIndex)
  • substring(int beginIndex, int endIndex)

1. substring(int beginIndex)

この形式のメソッドは、現在の文字列における開始位置を表す整数値を引数として受け取り、そのインデックスから文字列の末尾までの部分文字列を返します。

コード例

import java.util.Scanner;

public class SubStringExample {
    public static void main(String[] args) {
        System.out.println("文字列を入力してください:");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        System.out.println("切り出し開始のインデックスを入力してください:");
        int index = sc.nextInt();

        String res = str.substring(index);
        System.out.println("substring = " + res);
    }
}

実行結果

文字列を入力してください:
Welcome to Tutorialspoint
切り出し開始のインデックスを入力してください:
11
substring = Tutorialspoint

この例では、インデックス「11」以降の文字列、つまり「Tutorialspoint」が出力されています。

2. substring(int beginIndex, int endIndex)

この形式のメソッドは、開始インデックスと終了インデックスの2つの整数値を受け取り、その範囲に該当する部分文字列を返します。beginIndexで指定した位置の文字は結果に含まれますが、endIndexで指定した位置の文字は含まれない点に注意してください。

コード例

import java.util.Scanner;

public class SubStringExample {
    public static void main(String[] args) {
        System.out.println("文字列を入力してください:");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        System.out.println("開始インデックスを入力してください:");
        int start = sc.nextInt();

        System.out.println("終了インデックスを入力してください:");
        int end = sc.nextInt();

        String res = str.substring(start, end);
        System.out.println("substring = " + res);
    }
}

実行結果

文字列を入力してください:
hello how are you welcome to Tutorialspoint
開始インデックスを入力してください:
10
終了インデックスを入力してください:
20
substring = are you we

この例では、インデックス10〜19までの文字(endIndexの20は含まれない)が切り出され、「are you we」と出力されています。

注意点

substring()メソッドでは、指定したインデックスが文字列の長さを超えていたり、負の値であったりすると、StringIndexOutOfBoundsExceptionがスローされます。そのため、実際の開発では、インデックスの範囲を事前にチェックすることが推奨されます。

  1. JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説

    StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T

  2. JavaのString intern()メソッドとは?その役割と使い方をわかりやすく解説

    JavaにおけるStringクラスの基本Stringは、Javaで一連の文字(文字列)を格納するためのクラスで、java.langパッケージに属しています。Stringオブジェクトは一度生成すると内容を変更できない「イミュータブル(不変)」という特性を持っています。文字列の保存場所すべてのStringオブジェクトは、ヒープ領域内にある「文字列定数プール(String Constant Pool)」と呼ばれる専用のメモリ領域に格納されます。文字列リテラルを定義するたびに、JVMは文字列定数プール内にその値を持つStringオブジェクトを生成します。そのため、同じ内容の文字列リテラルが複数存在して