2011-09-19 47 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());