-1

アイテムのリストがあります(30文字列としましょう)。txtファイルに5項目、次に改行、次の5項目などを書き込む方法を理解しようとしています。次のようになります。

List<string> blah;
//List contains:
1
2
3
4
5
6
7
8
9
10

txtファイルに書き込みたいので、次のようになります。

1   2   3   4   5
6   7   8   9   10

これを書くカウンターがわからないようです。それが重要な場合は、StreamWriterを使用しています。

編集:これは私が現在持っているものですが、空白行のみを書き込みます。

for (var a = 0; a < ls.Count; a++)
        {
            foreach (string s in ls)
            {
                if (a == 0)
                {
                    sr.Write(s);
                }
                else if((a % 5) == 0)
                {
                    sr.Write(s);
                    sr.Write("\t");
                }

            }
        }

基本的に「5つの項目を書いたら、新しい行を開始する」と言う必要がある単純なカウンターであることがわかっているので、これは私を苛立たせています。

4

4 に答える 4

1

擬似コードで

for (int i = 0; i < list.Count; i++) {
    if (i == 0) {
        append to empty file (value)
    } else if ((i % 5) == 0) {
        append to new line (CR LF + value)
    } else {
        append to current line ("spaces or tab" + value)
    }
}
于 2012-06-27T17:09:42.017 に答える
1
        StringBuilder sb = new StringBulder();

        for (int i = 0; i < blah.Count; i++)
        {
            sb.Append(blah[i].ToString());

            if (i % 5 == 0)
            {
                sb.AppendLine();
            }
            else
            {
                sb.Append(" ");
            }
        }
于 2012-06-27T17:09:54.217 に答える
1

JohnPのコメントを拡張する:

for(var i = 0; i < blah.Count; i++)
{
    if(i % 5 == 0)
        //do new line

    YourPrintFunction(i);
}
于 2012-06-27T17:10:57.267 に答える
1

LINQの場合:

StringBuilder sb = new StringBuilder();
int i = 0;

blah.ForEach(s => { if ((++i % 5) == 0) sb.AppendLine(s); else sb.Append(s + "\t"); });

File.WriteAllText("filename", sb.ToString());
于 2012-06-27T17:11:22.323 に答える