いちいちfor文とかで繰り返すのも効率が悪いなと思ってたので、処理を関数化・・・
ただ、共通関数として登録しないので、別のところで使いたい場合は、同じ関数が複数登録されちゃうことに・・・
更には、思いつきで余計な処理を付け出すと、他のところまで手が回らなくなるっていうのを避けたくて、そもそもStringクラスに何か用意されてるでしょと。
ループで実装する
多分こんな感じでFor文になるかな。
string repeat = "abc"; string result = ""; int loop = 10; for(int i = 0; i < loop; i++) { result += repeat; }
でも、こんな処理を繰返しが欲しいところで随時記述してたら、馬鹿みたいにコードが長くなるし、何かあったときのメンテなんてやってられないw
関数化する
中身は変わってないけど、引数で繰り返したい文字列と回数を指定させるようにすると思う。
private string repeat_string(string repeat, int loop) { string result = ""; for(int i = 0; i < loop; i++) { result += repeat; } }
でも、こういう汎用性が高い(?)であろうものは、出来ればPJ内だけでも共通関数として使えるようにしたい。
というか、用意されてるべきでは???
とはいえ、用意されてなければ自分で用意する必要があるし、共通処理とかにはあまり手を出したくない。
となると、Stringクラスで何か用意されてないかしらんっと。
特定の1文字を繰り返したい(文字列は除く)
stringではなくて、char型・・・要は1文字の繰返しでいいなら、という条件付。
string result = new string('a', 10);
これで、resultには「aaaaaaaaaa(a×10個)」が定義される。
ただ、もう少し柔軟にしたい。
というか、やりたいのは文字列の繰り返しなんだ・・・
文字列の繰返しを取得する
欲しいのは文字列の繰返したものであって、同じ文字が単純に並んだだけのものじゃない。
で、調べたら、.NET Framework3,5以降で出来るようになってた。
string repeat = "abc"; int loop = 10; string result = string.Concat(Enumerable.Repeat(repeat, loop);
まとめ
.NET Framework3.5なら、Win7に標準搭載なので、なんにしろ使いやすいかも。
これで、0埋めでもスペース埋めでも何でも来いって感じ。
まぁ、そっちはPaddingを使った方が楽だけどw