С# StreamReader сохранить в массив с разделителем

У меня есть текстовый файл с данными, разделенными табулятором. Что мне нужно в моем приложении С#, так это то, что я читаю одну строку из текстового файла и сохраняю их в массив, разделяя их на каждый \t. Затем то же самое делаю со следующим рядом.

Мой код:

StreamReader sr = new StreamReader(dlg.FileName);
string s = sr.ReadLine();

Я уже пытался записать строку в массив, но это не сработало. Кто-нибудь знает, как с этим справиться?


person user896692    schedule 03.01.2012    source источник
comment
8 ответов, обеспечивающих тот же подход... должны ли мы также ввести флаги дублирования для ответов? :D   -  person Matthias    schedule 03.01.2012


Ответы (7)


Используйте метод Split для создания массива строк

string[] parts = s.Split('\t');

см. документацию по Split() здесь

person Alex    schedule 03.01.2012

s.Split('\t') разделит вашу строку по символу табуляции и создаст string[] соответствующей длины.

person Matthias    schedule 03.01.2012

Изменение вашего примера кода:

StreamReader sr = new StreamReader(dlg.FileName); 
string s = sr.ReadLine(); 
var items = s.Split('\t'); 

В конце элементы содержат массив строк, представляющих символы между вкладками. Вкладки не включены в массив. Массив может содержать пустые элементы (в случае двух последовательных вкладок).

person Mike Hofer    schedule 03.01.2012

Используйте метод String.Split(): http://msdn.microsoft.com/en-us/library/b873y76a.aspx

person Willem    schedule 03.01.2012

StreamReader reader = new StreamReader("input.txt");
string[] content = reader.ReadToEnd().Replace("\n","").Split('\t');

если вы хотите сохранить новую строку, чем

string[] content = reader.ReadToEnd().Split('\t');

person Rosmarine Popcorn    schedule 03.01.2012

В приведенном ниже примере items будет String[], содержащим каждую строку текстовых значений. Он будет перезаписываться при каждой итерации, поэтому вам нужно что-то с ним делать внутри цикла. Сохраните его в большую коллекцию, запишите в файл и т. д.

StreamReader sr = new StreamReader(dlg.FileName);
while (sr.Peek() >= 0) {
    var line = sr.ReadLine();
    var items = line.Split(new Char[] { '\t' });
}
person Yuck    schedule 03.01.2012

Если файл содержит только одну строку, используйте:

string[] myArray = s.Split('\t');
person NominSim    schedule 03.01.2012