指定範囲の部分文字列を別の文字列に置換する

広告

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

StringBuilder.replaceメソッドの使い方

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

public StringBuilder replace(int start, int end, String str)

パラメータ:
start - 開始インデックス(この値を含む)
end - 終了インデックス(この値を含まない)
str - 以前の内容を置換するString

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

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

1 番目の引数で指定した位置にある文字から 2 番目の引数で指定した位置の一つ前の文字までの部分文字列を、 3 番目の引数で指定した文字列で置換します。置換する文字列の長さは、対象の部分文字列の長さと異なっていても構いません。

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

StringBuilder sb = new StringBuilder();

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

sb.replace(3, 6, "DEF");
System.out.println(sb.toString());  // ABCDEFGHI

sb.replace(1, 8, "-");
System.out.println(sb.toString());  // A-I

文字列を追加したあと指定した範囲の部分文字列を別の文字列に置換しました。長さが違う文字列で置換した場合には、自動的に長さが調整されます。

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

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

サンプルコード

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

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

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

    sb.replace(2, 4, "12345");
    System.out.println(sb.toString());

    sb.replace(1, sb.length() - 1, "-");
    System.out.println(sb.toString());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample4_1.java

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

java JSample4_1

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

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

文字列(String)の指定範囲の部分文字列を別の文字列に置換する

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

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

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

StringBuilder sb = new StringBuilder(msg);

sb.replace(7, 12, "Ken");
msg = sb.toString();

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

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

-- --

Java の StringBuilder クラスで文字列や他の値を指定した位置に挿入する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。