2011-09-19 46 views
1

我有一个充满在循环中像这样的列表:拆分列表<string>项目和格式化出来

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

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

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

NAME SURNAME  AGE  WORK 
john smith  50  actor 

等。你能帮我弄清楚这种情况下的foreach循环吗?

+0

下面的代码是真实的,但加入“ - ”不好,你应该在分割字符串“tab” – icaptan

回答

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 
0

你可以将它们分为串这样的:

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

,然后让他们分别是这样的:

for(int i = 0; i < strings.Count; i++) 
{ 
    file.Write(strings[i] + " "); 
} 
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")); 
    } 
} 
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());