指定範囲の部分文字列を取得する

StringBuilder クラスの substring メソッドを使用すると、 StringBuilder オブジェクトに格納されている文字列の中で指定した範囲にある部分文字列を取得することができます。ここでは Java の StringBuilder クラスで指定範囲の部分文字列を取得する方法について解説します。

(Last modified: )

StringBuilder.substringメソッドの使い方

StringBuilder オブジェクトの指定した範囲にある部分文字列を取得するには、 StringBuilder クラスで用意されている substring メソッドを使用します。書式は次の通りです。

public String substring(int start, int end)

パラメータ:
start - 開始インデックス(この値を含む)
end - 終了インデックス(この値を含まない)

戻り値:
新しい文字列

例外:
StringIndexOutOfBoundsException - startまたはendが負の値であるかlength()より大きい場合、またはstartがendより大きい場合

1 番目の引数で指定した位置にある文字から 2 番目の引数で指定した位置の一つ前の文字までの部分文字列を取得して戻り値として返します。

次のサンプルを見てください。

StringBuilder sb = new StringBuilder();

sb.append("ABCDEFGHI");
System.out.println(sb.toString());  // ABCDEFGHI

System.out.println(sb.substring(3, 6));  // DEF

文字列を追加したあと指定した範囲の部分文字列を取得しました。

また部分文字列の開始位置だけを指定する substring メソッドも用意されています。

public String substring(int start)

パラメータ:
start - 開始インデックス(この値を含む)

戻り値:
新しい文字列

例外:
StringIndexOutOfBoundsException - startが0より小さい場合、あるいはこのオブジェクトの長さより大きい場合

1 番目の引数で指定した位置にある文字から最後の文字までの部分文字列を取得して戻り値として返します。

次のサンプルを見てください。

StringBuilder sb = new StringBuilder();

sb.append("ABCDEFGHI");
System.out.println(sb.toString());  // ABCDEFGHI

System.out.println(sb.substring(3));  // DEFGHI

文字列を追加したあと指定した開始位置から最後までの範囲の部分文字列を取得しました。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample8-1.java という名前で保存します。

class JSample8_1{
  public static void main(String[] args){
    StringBuilder sb = new StringBuilder();

    sb.append("ABCDEFGHI");
    System.out.println(sb.toString());
    System.out.println(sb.substring(3, 6));
    System.out.println(sb.substring(3));
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample8_1.java

その後で、次のように実行してください。

java JSample8_1

StringBuilder.substring?メソッドの使い方(2)

StringBuilder オブジェクトを作成し、文字列を追加したあと、指定した範囲の部分文字列を取得しました。

文字列(String)の指定範囲の部分文字列を取得する

StringBuilder クラスの substring? メソッドを使うことで、文字列(String クラスのインスタンス)の指定した範囲にある部分文字列を取得することができます。具体的には対象の文字列を引数に StringBuilder クラスのインスタンスを作成したあと指定した範囲の部分文字列を取得します。

次のサンプルを見てください。

String msg = "Hello! Tarou Bye.";
System.out.println(msg);  // Hello! Tarou Bye.

StringBuilder sb = new StringBuilder(msg);

msg = sb.substring(7, 12);
System.out.println(msg);  // Tarou

文字列から StringBuffer クラスのインスタンスを作成したあと、 substring? メソッドを使って指定した範囲の部分文字列を取得して元の変数に代入しています。

-- --

Java の StringBuilder クラスで指定範囲の部分文字列を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。