根据计数编写列表项

时间:2012-06-27 17:06:11

标签: c# list

我有一个项目列表(让我们说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 个答案:

答案 0 :(得分: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)
    }
}

答案 1 :(得分: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(" ");
            }
        }

答案 2 :(得分:1)

扩展JohnP的评论:

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

    YourPrintFunction(i);
}

答案 3 :(得分: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());