2011-09-19 2 views
1

를 걷어 서식 내가 루프에서이 같은 가득되고있는 목록이 있습니다 분할 목록 <string> 항목

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

은 분명히 난 그냥 순수 문자열을 썼다을, 그들은 실제로 몇 가지 변수입니다. 이제이 작업을 Stringbuilder 및 StringWriter를 사용하여 텍스트 파일로 내보내는 방법으로이 파일을 관리 할 수 ​​있다고 생각합니다 (이미 비슷한 작업을 수행 한 것입니다).

그래서 난 내 TEXTFILE는 다음과 같이 할 : 등등

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]); 
} 

출력 : 다음과 같이 개별적으로 얻을 다음

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

을 그리고 :

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

당신은 다음과 같은 문자열로 분할 할 수 우리 또는 당신의텍스트 파일을 만들 수 있습니다: 이미 (","), 직접 성능 향상을 위해 다음을 수행 할 수 있도록 구분이 있기 때문에

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

가 어떻게

NAME  SURNAME AGE  WORK 
john  smithhh 50   actor 
a   b   c   d 
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());