ぷちうんざりな気分。

javaで、Stringの分解がしたい場合


String str = "abbcccddddeeeee";
これから

String stra,strb,strc,strd,stre;
stra = "a";
strb = "bb";
strc = "ccc";
strd = "dddd";
stre = "eeeee";
が取り出したい場合、しかも、同じような感じの処理がたくさんある、
という状況で、ちょっと考えてみた。
普通はString::substring(int begin, int end)を使うところなのだが、毎回位置を計算するのは面倒だ。普通は足し算するのかな?

stra = str.substring(0, 0+1);
strb = str.substring(1, (1)+2);
strc = str.substring(1+2, (1+2)+3);
strd = str.substring(1+2+3, (1+2+3)+4);
stre = str.substring(1+2+3+4,(1+2+3+4)+5);
現在位置は左の値、右側は現在位置+取り出したい長さになっている。

// こういうクラスをどこかに定義しておく
class Accum
{
int i;
public Accum(){ i = 0;}
public now(){return i;}
public add(int k){i+=k; return k;}
}
//
Accum p = new Accum();
stra = str.substring(p.now(), p.add(1));
strb = str.substring(p.now(), p.add(2));
strc = str.substring(p.now(), p.add(3));
strd = str.substring(p.now(), p.add(4));
stre = str.substring(p.now(), p.add(5));
こういうとき、参照ではなく、ポインタが欲しくなる。
で、たまたま、↓を見つけた。なかなか面白い。
http://www.javaopen.org/jfriends/cforjava/