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 文字が挿入される。 |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
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 2 3 4 5 6 7 8 9 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メソッドについてご紹介した。
使う場面は限定されるかもしれないが、知っておいて損はないメソッドだ。ぜひ活用していただければと思う。