0

サイズが 100 の String miscFlag があります。0 ~ 19 は他の情報用に予約されているため、インデックス 20 から始まるこの miscFlag に追加する必要があります。その後、特定の位置にのみ追加します。StringBuilder/StringBuffer を使用してこれを行うことはできますか?

これは私がそれをやろうとしている方法です..

    StringBuilder info = new StringBuilder(miscFlag);
    info.append(" ");
    info.append(Misc.toTimestampLiteral(currentDate));//append this from pos 20
    info.append(" ");
    info.append(formattedStartTime);  //append this from pos 40

ここでは、追加する位置を指定できません。

4

4 に答える 4

2

挿入方法を使用します。

info.insert(19, Misc.toTimestampLiteral(currentDate));
于 2013-01-22T07:21:52.413 に答える
1

String#subString0 ~ 20 のインデックスを切り取り、新しい文字列を追加するために使用します。

String str = miscFlag.substring(0,20)+ " "+Misc.toTimestampLiteral(currentDate)+" "+  miscFlag.substring(21);
于 2013-01-22T07:22:07.707 に答える
0

以下のように挿入したい位置を指定できます

StringBuilder info = new StringBuilder(miscFlag);
info.insert(19, Misc.toTimestampLiteral(currentDate) + " ");
info.insert(39, formattedStartTime + " ");
于 2013-01-22T07:35:47.393 に答える
0

固定長フィールドは実行可能ですStringBuilderが、非常に不器用でエラーが発生しやすいように見えます。お勧めしません。String.formatを使用してください。フィールドの幅と位置が重要な文字列を作成するには、まさに必要です。

 String.format("A[%8s][%4s]", "ab","cd");

結果になります

 A[      ab][  cd]
于 2013-01-22T07:27:40.297 に答える