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

Javaのsubstring()メソッド徹底解説:文字列切り出しの基本と実例

Javaのsubstring()メソッドは、文字列の一部を切り出して返すためのメソッドです。取得したい文字の開始インデックスと終了インデックスを引数として指定でき、元の文字列は変更されずにそのまま残ります。

Javaプログラムでは、文字列の中から特定の部分だけを取り出したい場面がよくあります。

そんなときに役立つのがsubstring()メソッドです。このメソッドは、指定した開始インデックスから、省略可能な終了インデックスまでの部分文字列を返します。

この記事では、Javaにおけるsubstring()メソッドの基本的な使い方を解説し、実際のプログラムでの使用例も紹介します。

Java substring()の構文

substring()メソッドは、文字列から一連の文字を取り出します。どの文字を取得するかは、それぞれのインデックス値に基づいて決まります。

substring()メソッドは、次のように文字列に対して呼び出します。

public String substring(startIndex, endIndex)

substring()メソッドは、以下の2つのパラメータを受け取ります。

  • start:部分文字列の開始位置となるインデックス。この位置は範囲に含まれます。(必須)
  • end:部分文字列の終了位置となるインデックス。この位置は範囲に含まれません。省略した場合、デフォルトで文字列の長さが適用されます。(任意)

Javaの文字列はインデックスによって管理されています。つまり、文字列から個々の文字を取り出すことが可能です。

たとえば、文字列の先頭の文字は、常に「0」であるインデックス番号を参照することで取得できます。

インデックス番号は0から始まり、スペース・英字・数字・記号を含むすべての文字ごとに1ずつ増えていきます。

なお、扱っている文字列の長さを超えるインデックス値を指定すると、StringIndexOutOfBoundsExceptionがスローされます。このエラーを回避するには、正しい範囲を指定して文字列を取得するよう注意しましょう。

Java substring()の使用例

終了インデックスを指定しない場合

ここでは、コーヒーショップを経営していると想定します。注文が入ると、プログラム内で文字列が生成され、そこには注文番号・コーヒーの種類・顧客名が格納されます。

作りたいのは、注文番号以降のすべての文字を取得するプログラムです。注文番号は3文字です。この情報はバリスタに渡され、コーヒーを淹れる際に使われます。

注文番号以降の文字を取得するには、substring()メソッドを使用します。特定の位置以降のすべての文字を取得する場合は、endパラメータを指定する必要はありません。

public class GetOrderData {
	public static void main(String[] args) {
		String order = new String("020 Latte Eileen");
		System.out.println(order.substring(3));
	}
}

このコードを実行すると、次のように出力されます。Latte Eileen

文字列の末尾の文字まで正しく取得できていることがわかります。

まず、GetOrderDataというpublicクラスを定義します。このクラスは、顧客が注文したコーヒーと顧客名を取得するものです。注文内容を格納する変数を定義しておくことで、コード全体を通して顧客の注文を参照できるようになります。

次に、substring()メソッドを使って、インデックス3以降のすべての文字を取得します。インデックス3の位置自体も範囲に含まれます。

最後に、println()メソッドを使って、顧客名とコーヒーの注文内容をコンソールに出力します。

終了インデックスを指定する場合

今度は、注文番号だけを取得したいケースを考えてみましょう。注文番号は3桁の数字で、画面に表示され、顧客の注文がまもなく処理されることを知らせます。

注文番号は注文文字列の先頭にあり、長さは3文字です。substring()を使えば、注文番号だけを簡単に取り出せます。

public class GetOrderNumber {
	public static void main(String[] args) {
		String order = new String("020 Latte Eileen");
		System.out.println(order.substring(0, 3));
	}
}

このコードの出力結果は次のとおりです。020

substring()メソッドを使って、文字列のインデックス0から3の間にある文字を取得しています。この範囲には、取得したい注文番号が含まれています。

文字列のインデックスは0から始まる点に注意してください。endパラメータで指定した値(この場合は3)は範囲に含まれないため、インデックス0〜3を指定することで、ちょうど3文字分を取得できます。

まとめ

substring()メソッドは、既存の文字列から文字を抽出するためのメソッドです。開始インデックスと終了インデックスを受け取り、それぞれ部分文字列の開始位置と終了位置を指定します。このメソッドは新しい文字列を生成するだけで、元の文字列を変更することはありません。

これで、Javaのsubstring()メソッドを自信を持って使えるようになりました!次に学ぶべき内容については、Java学習ガイドもぜひ参考にしてください。

  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入門】endsWith()メソッドで文字列が特定のサブ文字列で終わるかどうかを判定する方法

    JavaにおけるString(文字列)は、不変(イミュータブル)な文字列の並びを表すオブジェクトです。一度生成された文字列インスタンスは、後から内容を変更することはできません。文字列オブジェクトを作成する際には、java.lang.Stringクラスを使用します。ある文字列が特定の文字列(サブ文字列)で終わっているかどうかを判定したい場合には、Stringクラスが提供するendsWith()メソッドを利用します。このメソッドは、末尾が指定した文字列と一致していればtrue、一致していなければfalseというboolean値を返します。構文public boolean endsWith(Stri