拆分列表<string>项并将其格式化</string>

时间:2011-09-19 11:51:14

标签: c# .net string list stringbuilder

我有一个List,在循环中填充了这样的东西:

myList.Add("john,smith,50,actor");

显然我刚写了纯字符串,它们实际上是一些变量。现在我想要做的是使用Stringbuilder和StringWriter将它导出到一个文本文件,我认为我可以管理它(已经做了类似的事情)。

所以我希望我的文本文件看起来像这样:

NAME    SURNAME      AGE      WORK
john    smith        50       actor

等等。你能帮我找出这个案例的foreach循环吗?

4 个答案:

答案 0 :(得分:3)

const string Format = "{0,-10} {1,-10} {2,-10} {3,-10}";

var myList = new List<string>();
myList.Add("john,smithhh,50,actor");
myList.Add("a,b,c,d");

var res = myList.Select(i => i.Split(','));

Console.WriteLine(Format, "NAME", "SURNAME", "AGE", "WORK");
foreach (var line in res)
{
    Console.WriteLine(Format, line[0], line[1], line[2], line[3]);
}

输出:

NAME       SURNAME    AGE        WORK
john       smithhh    50         actor
a          b          c          d

答案 1 :(得分:0)

您可以将它们分成如下字符串:

String[] strings = myList[i].Split(',');

然后像这样单独得到它们:

for(int i = 0; i < strings.Count; i++)
{
    file.Write(strings[i] + " ");
}

答案 2 :(得分:0)

以下是如何创建我们或您的List<string>

的文本文件
var path = @"C:\test.txt";
var streamWriter = File.Exists(path) ? File.AppendText(path) : File.CreateText(path);
using (streamWriter)
{
    streamWriter.WriteLine("NAME\tSURNAME\tAGE\tWORK");
    foreach (string s in myList)
    {
        streamWriter.WriteLine(s.Replace(",", "\t"));
    }
}

答案 3 :(得分:0)

因为你已经有了分隔符(“,”),所以你可以直接执行以下操作以获得更好的性能,无需转换:

var result = new StringBuilder();
result.AppendLine("NAME\tSURNAME\tAGE\tWORK");
myList.ForEach(i => result.AppendLine(i.Replace(",", "\t")));
System.IO.File.WriteAllText("foo.txt", result.ToString());