2015-05-12 7 views
2

Я пытаюсь выяснить, как tokenize 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(); 
Смежные вопросы