指定範囲の部分文字列を削除する

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

(Last modified: )

StringBuilder.deleteメソッドの使い方

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

public StringBuilder delete(int start, int end)

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

戻り値:
このオブジェクト

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

1 番目の引数で指定した位置にある文字から 2 番目の引数で指定した位置の一つ前の文字までの部分文字列を削除します。削除された部分よりもあとに文字列がある場合は、自動的に前に詰められます。

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

StringBuilder sb = new StringBuilder();

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

sb.delete(3, 6);
System.out.println(sb.toString());  // ABCGHI

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

先ほどのサンプルの場合は次のように文字列が追加・置換されます。

StringBuilder.deleteメソッドの使い方(1)

サンプルコード

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

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

    sb.append("ABCdefGHI");
    System.out.println(sb.toString());

    sb.delete(3, 6);
    System.out.println(sb.toString());

    sb.delete(0, sb.length());
    System.out.println(sb.toString());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample5_1.java

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

java JSample5_1

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

StringBuilder オブジェクトを作成し、文字列を追加したあと、指定した範囲の部分文字列を削除しました。最後に StringBuilder オブジェクトに格納されている文字をすべて削除しました。

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

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

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

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

StringBuilder sb = new StringBuilder(msg);

sb.delete(7, 13);
msg = sb.toString();

System.out.println(msg);  // Hello! Bye.

文字列から StringBuffer クラスのインスタンスを作成したあと、 delete メソッドを使って指定した範囲の部分文字列を削除し、そのあとで StringBuffer オブジェクトから文字列を作成して元の変数に代入しています。

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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