我有一个项目列表(让我们说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个项目之后,开始换行”。
答案 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());