指定した位置に文字列を挿入する

StringBuilder クラスの insert メソッドを使用すると、 StringBuilder オブジェクトの指定した位置に対して文字列や他のデータ型の値を挿入することができます。ここでは Java の StringBuilder クラスで文字列や他の値を指定した位置に挿入する方法について解説します。

(Last modified: )

StringBuilder.insertメソッドの使い方

StringBuilder オブジェクトの指定した位置に文字列を挿入するには、 StringBuilder クラスで用意されている insert メソッドを使用します。書式は次の通りです。

public StringBuilder insert(int offset, String str)

パラメータ:
offset - オフセット
str - 文字列

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

例外:
StringIndexOutOfBoundsException - オフセットが無効な場合

1 番目の引数に挿入する位置を指定し、 2 番目引数に StringBuilder オブジェクトに挿入する文字列を指定します。位置は一番最初の文字の前の位置が 0 で、最後の文字のあとが StringBuilder オブジェクトの長さの値となります。 0 よりも小さい値や、オブジェクトの長さよりも大きい値を指定すると例外が発生します。

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

StringBuilder sb = new StringBuilder();
sb.append("ABC");
sb.append("DEF");
System.out.println(sb.toString());  // ABCDEF

sb.insert(2, "XYZ");
System.out.println(sb.toString());  // ABXYZCDEF

文字列を追加したあと指定の位置に文字列を挿入しました。 StringBuilder オブジェクトの領域に入りきらない文字列が挿入された場合は、自動的に領域が拡張されて追加されます。

先ほどのサンプルの場合は次のように文字列が追加・挿入されます。挿入する位置として 2 を指定しているので、 2 の位置にある文字の前に挿入されます。

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

サンプルコード

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

class JSample2_1{
  public static void main(String[] args){
    StringBuilder sb = new StringBuilder();
    sb.append("ABC");
    sb.append("DEF");
    System.out.println(sb.toString());

    sb.insert(2, "XYZ");
    System.out.println(sb.toString());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample2_1.java

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

java JSample2_1

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

StringBuilder オブジェクトを作成し、文字列を 2 回追加したあと、指定した位置に新しい文字列を挿入しました。

数値やオブジェクトを挿入する

StringBuilder オブジェクトに挿入できるのは文字列だけではなく数値やオブジェクトなども追加することができます。挿入するデータ型に合わせて引数が異なる insert メソッドがそれぞれ用意されています。数値を挿入した場合は数値を文字列表現したもの、オブジェクトを挿入した場合はオブジェクトを文字列表現したものが追加されます。

public StringBuilder insert(int offset, boolean b)
public StringBuilder insert(int offset, char c)
public StringBuilder insert(int offset, int i)
public StringBuilder insert(int offset, long l)
public StringBuilder insert(int offset, float f)
public StringBuilder insert(int offset, double d)
public StringBuilder insert(int dstOffset, CharSequence s, int start, int end)
public StringBuilder insert(int dstOffset, CharSequence s)
public StringBuilder insert(int offset, char[] str)
public StringBuilder insert(int offset, Object obj)
public StringBuilder insert(int index, char[] str, int offset, int len)

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

StringBuilder sb = new StringBuilder();
sb.append("ABCDEF");

sb.insert(1, 5.7);
System.out.println(sb.toString());  // A5.7BCDEF

sb.insert(7, true);
System.out.println(sb.toString());  // A5.7BCDtrueEF

文字列を挿入した場合と同じように、文字列表現に変換されたあとで指定の位置に挿入されていきます。

サンプルコード

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

class JSample2_1{
  public static void main(String[] args){
    StringBuilder sb = new StringBuilder();
    sb.append("ABC");
    sb.append("DEF");
    System.out.println(sb.toString());

    sb.insert(2, "XYZ");
    System.out.println(sb.toString());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample2_2.java

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

java JSample2_2

数値やオブジェクトを挿入する(1)

StringBuilder オブジェクトを作成し文字列を追加したあとで、 double 型の数値と boolean 型の値を指定した位置に挿入したあと、文字列に変換してから画面に出力しました。

文字列(String)に別の文字列を挿入する

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

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

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

StringBuilder sb = new StringBuilder(msg);

sb.insert(7, "Tarou ");
msg = sb.toString();

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

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

-- --

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

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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