StringBuilderクラス
insertメソッド
文字列を自身の文字列に挿入します。
insert
少し癖があるけど
indexOf や lastIndexOf
と組み合わせると、
使いやすいぞ。
目次
1. insertメソッド
自身の文字列の int offset に指定された位置に
引数の文字列(String str)を挿入します。
戻り値は、appendメソッドと同様に、インスタンス自身です。
必ずしも戻り値を受ける必要はありません。
public StringBuilder insert(int offset, String str)
2. サンプルコード
先頭に項目行を挿入して、各行の先頭に行番号を挿入するサンプルコードです。
行の先頭は、「改行(\n) の一文字前」で特定しています。
挿入する offset の値を特定する部分も注目です。
//Sample09_01.java
class Sample09_01{
public static void main(String[] args){
//変更前のデータ
StringBuilder sb = new StringBuilder();
sb.append("黄瀬涼太\n");
sb.append("緑間真太郎\n");
sb.append("青峰大輝\n");
sb.append("紫原敦\n");
sb.append("赤司征十郎\n");
System.out.println(sb.toString());
System.out.println("-----------------");
/*各行に行番号を挿入*/
String searchWord = "\n"; //検索文字列
int rowNo = 1; //行番号
int offset = 0; //挿入位置(searchWord の後ろ)
//一行目
sb.insert(offset, rowNo + "\t");
rowNo++;
offset = sb.indexOf(searchWord, offset);
//二行目以降
while(offset != -1){
offset += searchWord.length(); //挿入位置(searchWord の後ろ)
if(offset >= sb.length())break; //sb の末尾
sb.insert(offset, rowNo + "\t");
rowNo++;
offset = sb.indexOf(searchWord, offset);
}
System.out.println(sb.toString());
System.out.println("-----------------");
/*先頭に項目行を挿入*/
sb.insert(0, "NO\t氏名\n");
System.out.println(sb.toString());
}
}
コマンドライン
>cd ws
ws>javac -encoding UTF-8 Sample09_01.java
ws>java Sample09_01
黄瀬涼太
緑間真太郎
青峰大輝
紫原敦
赤司征十郎
-----------------
1 黄瀬涼太
2 緑間真太郎
3 青峰大輝
4 紫原敦
5 赤司征十郎
-----------------
NO 氏名
1 黄瀬涼太
2 緑間真太郎
3 青峰大輝
4 紫原敦
5 赤司征十郎
う~ん。
文字列を挿入する int offset を
調べるのが大変そうっスね。
そうだね。
必ず出現する文字列を手掛かりに
indexOf で特定するのがコツなんだ。
お疲れ様でした。