StringBuilderクラス – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Wed, 01 Mar 2017 08:51:06 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 Javaで文字列を挿入するinsertメソッド【StringBuilderクラス】 https://eng-entrance.com/java-stringbuilder-insert https://eng-entrance.com/java-stringbuilder-insert#respond Thu, 08 Sep 2016 00:01:27 +0000 http://eng-entrance.com/?p=2524 Javaで指定した位置に文字列を挿入したい場合、StringBuilderクラスのinsertメソッドを使う。

このページではinsertメソッドを利用して、文字列を任意の場所に追加する方法についてお伝えしよう。

文字列を挿入するinsertメソッド

指定した位置に文字列を挿入したい場合、StringBufferクラスもしくはStringBuilderクラスを使うことで実現できる。

StringBuilderクラスはJava1.5で新しく追加されたクラスで、StringBufferよりも効率よく処理が行われるようになっている。

そのため、単純に文字列操作をする場合はStringBuilderクラスを使うのがオススメだ。

StringBuilderクラスを利用しての文字列挿入処理

StringBuilderクラスを使った文字列への挿入処理を見ていこう。

書き方の基本はこうなる。

対象文字列.insert(追加位置,追加対象 )

追加位置には0 に等しいかそれより大きく、対象文字列の長さ(文字数)に等しいかこれより小さい値を設定できる。

対象文字列の文字数を超える値を設定すると、エラーが発生するので注意しよう。

追加対象としての引数にはboolean型・char型・char型の配列・double型・float型・int型・long型・String型など様々な型の値を設定できる。

長々と説明しているが、サンプルコードの飛んでしまっても構わない。

boolean型

insert(int offset,boolean b)

戻り値の型

StringBuilder

内容

boolean 引数の文字列表現をこの文字列に追加する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたインデックス位置に挿入された場合とまったく同じ結果になる。

char型

insert(int offset,char c)

戻り値の型

StringBuilder

内容

char 引数の文字列表現をこの文字列に挿入する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたインデックス位置に挿入された場合とまったく同じ結果になる。

char型配列

insert(int offset,char[] a)

戻り値の型

StringBuilder

内容

char 配列引数の文字列表現をこの文字列に挿入します。

この文字列の内容の offset で示された位置に、配列引数の文字が挿入される。この文字列の長さは、引数の長さの分だけ増える。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたオフセット位置に挿入された場合とまったく同じ結果になる。

double型

insert(int offset,double d)

戻り値の型

StringBuilder

内容

double 引数の文字列表現をこの文字列に挿入する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたオフセット位置に挿入された場合とまったく同じ結果になる。

float型

insert(int offset,float f)

戻り値の型

StringBuilder

内容

float 引数の文字列表現をこの文字列に挿入する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたオフセット位置に挿入された場合とまったく同じ結果になる。

int型

insert(int offset,int i)

戻り値の型

StringBuilder

内容

2 番目の int 引数の文字列表現をこの文字列に挿入する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたオフセット位置に挿入された場合とまったく同じ結果になる。

long型

insert(int offset,long l)

戻り値の型

StringBuilder

内容

long 引数の文字列表現をこの文字列に挿入する。

最終的には、2 番目の引数が文字列に変換されてから、その文字列の文字がこの文字列内の指定されたオフセット位置に挿入された場合とまったく同じ結果になる。

String型

insert(int offset,String str)

戻り値の型

StringBuilder

内容

この文字列の指定されたオフセット位置に String 引数の文字が順番に挿入され、その位置にもともとあった文字はすべて上方に移動され、この文字列の長さが引数の長さ分だけ増加する。str が null の場合は、"null" という 4 文字が挿入される。

サンプルコード

public class StringBuilderSample3 {
    public static void main(String[] args) {

        StringBuilder sb = new StringBuilder("ABC");
        System.out.println("[1]:" + sb.toString()); //[1]

        boolean bool = true;
        sb.insert(0,bool);
        System.out.println("[2]:" + sb.toString()); //[2]
        
         double dNum = 0.111111;
        sb.insert(4,dNum);
        System.out.println("[3]:" + sb.toString()); //[3]

        char ch = '字';
        sb.insert(13,ch);
        System.out.println("[4]:" + sb.toString()); //[4]

        char[] cArray = {'配', '列'};
        sb.insert(2,cArray);
        System.out.println("[5]:" + sb.toString()); //[5]

        int num = 10;
        sb.insert(15,num);
        System.out.println("[6]:" + sb.toString()); //[6]

        long lNum = 999999999;
        sb.insert(17,lNum);
        System.out.println("[7]:" + sb.toString()); //[7]

        float fNum = 100;
        sb.insert(23,fNum);
        System.out.println("[8]:" + sb.toString()); //[8]
        
        String str ="String";
        sb.insert(6,str);
        System.out.println("[9]:" + sb.toString()); //[9]

        String strNull =null;
        sb.insert(25,strNull);
        System.out.println("[10]:" + sb.toString()); //[10]               
    }
}

実行結果

[1]:ABC
[2]:trueABC
[3]:true0.111111ABC
[4]:true0.111111A字BC
[5]:tr配列ue0.111111A字BC
[6]:tr配列ue0.111111A10字BC
[7]:tr配列ue0.111111A10999999999字BC
[8]:tr配列ue0.111111A10999999100.0999字BC
[9]:tr配列ueString0.111111A10999999100.0999字BC
[10]:tr配列ueString0.111111A1099null9999100.0999字BC

サンプルコードの説明

簡単にサンプルコードの説明を行う。

  • [1] StringBuilder型の変数sbを「ABC」で初期化し結果を表示する。
  • [2] 変数sbにboolean型変数boolを0文字目に挿入し、結果を表示する。boolean値が文字列として追加されている。
  • [3] 変数sbにdouble型変数dNumを4文字目に挿入し、結果を表示する。
  • [4] 変数sbにchar型変数chを13文字目に挿入し、結果を表示する。
  • [5] 変数sbにchar型配列の変数cArrayを2文字目に挿入し、結果を表示する。配列の要素を取り出して一つ一つ挿入しなくても一度の操作で配列中の文字すべてを挿入。
  • [6] 変数sbにint型変数numを15文字目に挿入し、結果を表示する。
  • [7] 変数sbにlong型変数lNumを17文字目に挿入し、結果を表示する。
  • [8] 変数sbにfloat型変数fNumを23文字目に挿入し、結果を表示する。
  • [9] 変数sbにString型変数strを6文字目に挿入し、結果を表示する。
  • [10] 変数sbにString型変数strNullを25文字目に挿入し、結果を表示する。strNullにはNull値(※)を設定。「null」という文字列が挿入される。

※NULL 何もないことを表す特殊な値。

まとめ

このページではJavaで文字列を任意の場所に挿入するStringBuilderクラスのinsertメソッドについてご紹介した。

使う場面は限定されるかもしれないが、知っておいて損はないメソッドだ。ぜひ活用していただければと思う。

]]>
https://eng-entrance.com/java-stringbuilder-insert/feed 0
Javaで文字列を追加するappendメソッド【StringBuilderクラス】 https://eng-entrance.com/java-stringbuilder-append https://eng-entrance.com/java-stringbuilder-append#respond Mon, 05 Sep 2016 23:25:27 +0000 http://eng-entrance.com/?p=2503 Javaで文字列を追加するにはいくつかの方法があるが、StringBuilderクラスを使うのも便利だ。

このページではStringBuilderクラスのappendメソッドを利用して、文字列を追加する方法をお伝えしよう。

文字列を追加する(append)

文字列「おはよう」へ「ございます」という文字列を追加して「おはようございます」としたい場合、以下の複数の方法がある。

  • Stringクラスを使用する。
  • StringBufferクラスを使用する。
  • StringBuilderクラスを使用する。

1のStringクラスを使用する場合は、プラス(+)演算子を使用して文字列を連結する。

ただし、Stringクラスの文字列は値を変更することができないので、連結した結果は新しい変数へ代入する必要がある。

2のStringBufferクラスと3のStringBuilderクラスはほぼ同じ機能を持つ。

どちらも新しいオブジェクトを新しく作ることなく、文字列の内容を変更することができる。

StringBuilderクラスはJava1.5で新しく追加されたクラスで、StringBufferよりも効率よく処理が行われるようになっている。

StringBuilderクラスを利用しての文字列追加処理

StringBuilderクラスを使った文字列の追加処理を見ていこう。

書き方の基本はこうなる。

対象文字列.append(追加対象 )

対象文字列の末尾へ追加対象が文字列として追加される。

追加対象として引数に指定できる値にはboolean型・char型・char型の配列・double型・float型・int型・long型・String型・StringBuffer型・・と様々な種類が用意されている。

どの型が引数として設定されても、文字列に変換して追加される。下記長く書いているが、お伝えしているのは同じ話だ。

サンプルコードまで飛んでいただいて構わない。

boolean型

append(boolean b)

戻り値の型

StringBuilder

内容

boolean 引数の文字列表現を対象文字列に追加する。

引数は、文字列に変換され、その文字列の文字が対象文字列に追加される。

char型

append(char c)

戻り値の型

StringBuilder

内容

char 引数の文字列表現を対象文字列に追加する。

引数は対象文字列に追加される。対象文字列の長さは 1 だけ増加する。

char型配列

append(char[] str)

戻り値の型

StringBuilder

内容

char 配列引数の文字列表現を対象文字列に追加する。

配列引数の文字は、対象文字列の内容に順番に追加される。対象文字列の長さは引数の長さの分だけ増加する。

double型

append(double d)

戻り値の型

StringBuilder

内容

double 引数の文字列表現を対象文字列に追加する。

引数は文字列に変換され、その文字列の文字が対象文字列に追加される。

float型

append(float f)

戻り値の型

StringBuilder

内容

float 引数の文字列表現を対象文字列に追加する。

引数は文字列に変換され、その文字列の文字が対象文字列に追加される。

int型

append(int i)

戻り値の型

StringBuilder

内容

int 引数の文字列表現を対象文字列に追加する。

引数は文字列に変換され、その文字列の文字が対象文字列に追加される。

long型

append(long lng)

戻り値の型

StringBuilder

内容

long 引数の文字列表現を対象文字列に追加する。

引数は文字列に変換され、その文字列の文字が対象文字列に追加される。

String型

append(String str)

戻り値の型

StringBuilder

内容

指定された文字列を対象文字列に追加する。

String 引数の文字が、順番に対象文字列に追加される。その結果、引数の長さの分だけ対象文字列の長さが増えます。str が null の場合、"null" の 4 文字が追加される。

StringBuffer型

append(StringBuffer sb)

戻り値の型

StringBuilder

内容

指定された StringBuffer を対象文字列に追加する。

StringBuffer 引数の文字が、順番に対象文字列に追加される。その結果、引数の長さの分だけ対象文字列の長さが増えます。sb が null の場合、"null" の 4 文字が対象文字列に追加される。

サンプルコード

public class StringBuilderSample1 {
    public static void main(String[] args) {

        StringBuilder sb = new StringBuilder("おはよう");
        sb.append("ございます。");
        System.out.println("[1]:" + sb.toString()); //[1]

        boolean bool = true;
        sb.append(bool);
        System.out.println("[2]:" + sb.toString()); //[2]
        
         double dNum = 0.123454;
        sb.append(dNum);
        System.out.println("[3]:" + sb.toString()); //[3]

        char ch = '字';
        sb.append(ch);
        System.out.println("[4]:" + sb.toString()); //[4]

        char[] cArray = {'配', '列'};
        sb.append(cArray);
        System.out.println("[5]:" + sb.toString()); //[5]

        int num = 10;
        sb.append(num);
        System.out.println("[6]:" + sb.toString()); //[6]

        long lNum = 999999999;
        sb.append(lNum);
        System.out.println("[7]:" + sb.toString()); //[7]

        float fNum = 100;
        sb.append(fNum);
        System.out.println("[8]:" + sb.toString()); //[8]
        
        String str ="String";
        sb.append(str);
        System.out.println("[9]:" + sb.toString()); //[9]

        StringBuffer sbf = new StringBuffer("StringBuffer");
        sb.append(sbf);
        System.out.println("[10]:" + sb.toString()); //[10]   
        String strNull= null;
        sb.append(strNull);
        System.out.println("[11]:" + sb.toString()); //[11]
    }
}

実行結果

[1]:おはようございます。
[2]:おはようございます。true
[3]:おはようございます。true0.123454
[4]:おはようございます。true0.123454字
[5]:おはようございます。true0.123454字配列
[6]:おはようございます。true0.123454字配列10
[7]:おはようございます。true0.123454字配列10999999999
[8]:おはようございます。true0.123454字配列10999999999100.0
[9]:おはようございます。true0.123454字配列10999999999100.0String
[10]:おはようございます。true0.123454字配列10999999999100.0StringStringBuffer
[11]:おはようございます。true0.123454字配列10999999999100.0StringStringBuffernull

サンプルコードの説明

簡単にサンプルコードの説明を行おう。

  • [1] StringBuilder型の変数sbを「おはよう」で初期化し、appendメソッドを利用して文字列「ございます。」を追加。結果を表示する。
  • [2] 変数sbにboolean型変数boolを追加し、結果を表示する。boolean値が文字列として追加されている。
  • [3] 変数sbにdouble型変数dNumを追加し、結果を表示する。
  • [4] 変数sbにchar型変数chを追加し、結果を表示する。
  • [5] 変数sbにchar型配列の変数cArrayを追加し、結果を表示する。配列の要素を取り出して一つ一つ追加しなくても一度の操作で配列中の文字すべてを追加
  • [6] 変数sbにint型変数numを追加し、結果を表示する。
  • [7] 変数sbにlong型変数lNumを追加し、結果を表示する。
  • [8] 変数sbにfloat型変数fNumを追加し、結果を表示する。
  • [9] 変数sbにString型変数strを追加し、結果を表示する。
  • [10] 変数sbにStringBuffer型変数sbfを追加し、結果を表示する。
  • [11] 変数sbにString型変数strNullを値がnullのまま追加し、結果を表示する。

まとめ

このページではJavaで文字列を追加するStringBuilderクラスのappendメソッドについてご紹介した。

処理は早く、新しくオブジェクトを作ることもない。ぜひ積極的に使っていただければと思う。

]]>
https://eng-entrance.com/java-stringbuilder-append/feed 0