ネタ元 → 区切るというのは面倒
int[] data = { 1, 2, 3 }; から "1,2,3" をプリント(Console.Write)するには
最初の一個だけformatを"{0}", それ以降は ",{0}"
あるいは
最後の一個だけformatを"{0}", それ以前は "{0},"
にせにゃなりません。
bool first = true;
foreach ( int n in data ) {
System.Console.Write( first ? "{0}":",{0}", n);
first = false;
}
列挙のたんびにこれ書くのめんどっちーので:
// 列挙のためのフォーマット
class EnumForm {
public delegate string form_();
private string firstForm_; // 最初のformat
private string succForm_; // 以降のformat
public form_ form;
private string first() { form = succ; return firstForm_; }
private string succ() { return succForm_; }
public EnumForm(string firstForm, string succForm) {
firstForm_ = firstForm;
succForm_ = succForm;
form = first;
}
public void reset() { form = first; }
}
// おためし
class Program {
public static void Main() {
EnumForm ef = new EnumForm("{0}", ",{0}");
int[] data = { 1, 2, 3, 4, 5 };
foreach ( int n in data ) {
System.Console.Write(ef.form(), n);
}
System.Console.WriteLine();
ef.reset(); // 再利用
foreach ( int n in data ) {
System.Console.Write(ef.form(), n);
}
}
}
なんか余計にめんどっちくなった気がしなくもなくもなくも