-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 回答