以下の2問は最終的に「xyz」を出力するようなのですが、自分でやるとどうも答え通りにいきません。それぞれの関数後の途中結果を含めて解説をお願いします。
<1問目>
StringBuffer s = new StringBuffer("xxxzzzyyy");
s = s.delete(1,3).replace(1,3,"y").delete(3,6);
System.out.println(s);
<2問目>
StringBuffer s = new StringBuffer("xxxzzzyyy");
s.replace(1,3,"y").delete(2,8).append("z");
System.out.println(s);
ポイントは文字列操作のindexは0から始まる。(一番先頭文字が0,index1は2文字目)
操作する最後の文字は指定されたindex-1
replace(1,3だったら実際に操作されるのは1オリジンで数えた場合は2文字目,3文字目
以下は0オリジンで記載します
1問目
xxxzzzyyyの1文字目,2文字目を削除→xzzzyyy
xzzzyyyの1文字目,2文字目をy1文字に置換→xyzyyy
xyzyyyの3文字目~5文字目を削除→xyz
2問目
xxxzzzyyyの1文字目,2文字目をy1文字に置換→xyzzzyyy
xyzzzyyyの2~7文字目を削除→xy
xyにzを追加→xyz
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | uskshv | 1回 | 0回 | 0回 | 2008-11-02 10:45:44 |
replaceの対象となっている文字をすべて変換していたのが原因でした。