2015-05-12 53 views
2

我想弄清楚如何標記文本文件的StreamReader。我已經能夠分開這些行,但現在我正試圖弄清楚如何通過製表符分隔符來分解這些行。這是我迄今爲止所擁有的。StreamReader行和行分隔符

string readContents; 
using (StreamReader streamReader = new StreamReader(@"File.txt")) 
{ 
    readContents = streamReader.ReadToEnd(); 
    string[] lines = readContents.Split('\r'); 
    foreach (string s in lines) 
    { 
     Console.WriteLine(s); 
    } 
} 
Console.ReadLine(); 
+0

我不明白。如果每行都有由製表符分隔的列,則在回車符處分隔行的相同方法可以在製表符處分割單行並在行中生成一個字符串數組 – Steve

+1

如果您爲什麼要調用'ReadToEnd()'想通過換行符分割?調用'ReadLine()'會讀取一行,你可以迭代或按標籤或其他方式分割。 –

+0

@DourHighArch這是一個很好的觀點。我記得之前遇到過一個問題,然後直接跳到這個解決方案。我很可能會很快轉回到那一個。 – Briknthewall

回答

2
string readContents; 
using (StreamReader streamReader = new StreamReader(@"File.txt")) 
{ 
    readContents = streamReader.ReadToEnd(); 
    string[] lines = readContents.Split('\r'); 
    foreach (string s in lines) 
    { 
     string[] lines2 = s.Split('\t'); 
     foreach (string s2 in lines2) 
     { 
      Console.WriteLine(s2); 
     } 
    } 
} 
Console.ReadLine(); 

真的不知道,如果這是你想要的,但是......它打破(標籤)已經破碎(返程)線

2

只要在每行上調用Split()並將它們保存在列表中。如果你需要一個數組,你可以隨時撥打ToArray()名單:

string readContents; 
using (StreamReader streamReader = new StreamReader(@"File.txt")) 
{ 
    readContents = streamReader.ReadToEnd(); 
    string[] lines = readContents.Split('\r'); 
    List<string> pieces = new List<string>(); 
    foreach (string s in lines) 
    { 
     pieces.AddRange(s.Split('\t')); 
     Console.WriteLine(s); 
    } 
} 
Console.ReadLine();