格納されている文字列の長さを変更する

StringBuilder クラスの setLength メソッドを使用すると、 StringBuilder オブジェクトに格納されている文字列の長さを変更することができます。現在よりも短い値を指定すると格納されている文字列が切り取られ、長い値を指定すると '\u0000' で埋められます。ここでは Java の StringBuilder クラスで格納されている文字列の長さを取得する方法について解説します。

(Last modified: )

StringBuilder.setLengthメソッドの使い方

StringBuilder オブジェクトの長さを変更するには、 StringBuilder クラスで用意されている setLength メソッドを使用します。書式は次の通りです。

public void setLength(int newLength)

パラメータ:
newLength - 新しい長さ

例外:
IndexOutOfBoundsException - newLength引数が負の場合

1 番目の引数に StringBuilder オブジェクトの新しい長さを指定します。

例えば現在 9 文字が格納されているときに、新しい長さとして 6 を指定すると、格納されている文字が先頭の文字から 6 文字までとなります。残りの 3 文字は '\u0000' に置き換えられるため再度長さを 6 文字に指定しても元の文字が戻ることはありません。

逆に現在 6 文字が格納されているときに、新しい長さとして 9 を指定すると、格納されている文字が先頭の文字から 9 文字までとなります。元々存在しなかった残りの 3 文字は '\u0000' が必要なだけ追加されます。

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

StringBuilder sb = new StringBuilder();

sb.append("ABCDEF");

sb.setLength(3);
System.out.println("[" + sb.toString() + "]");  // [ABC]

sb.setLength(6);
System.out.println("[" + sb.toString() + "]");  // [ABC   ]

StringBuilder オブジェクトに格納されている文字数を一度 6 から 3 に減らし、そのあとで 3 から 6に増やしました。

サンプルコード

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

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

    sb.append("ABCDEF");
    System.out.println("[" + sb.toString() + "]");
    System.out.println(sb.length());

    sb.setLength(3);
    System.out.println("[" + sb.toString() + "]");
    System.out.println(sb.length());

    sb.setLength(6);
    System.out.println("[" + sb.toString() + "]");
    System.out.println(sb.length());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample9_1.java

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

java JSample9_1

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

StringBuilder オブジェクトを作成し、文字列を追加したあとで格納されている文字数を変更しました。

文字列(String)の長さを変更する

StringBuilder クラスの setLength? メソッドを使うことで、文字列(String クラスのインスタンス)の長さを変更することができます。具体的には対象の文字列を引数に StringBuilder クラスのインスタンスを作成したあと長さを変更し、そのあとで文字列に変換します。

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

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

StringBuilder sb = new StringBuilder(msg);

sb.setLength(6);
msg = sb.toString();
System.out.println(msg);  // Hello!

文字列から StringBuffer クラスのインスタンスを作成したあと、 setLength? メソッドを使って長さを変更し、そのあとで文字列に変換して元の変数に代入しています。

-- --

Java の StringBuilder クラスで格納されている文字列の長さを取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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