C# StreamReader запазва в масив с разделител

Имам текстов файл с данни, разделени с табулатор. Това, от което се нуждая в моето C# приложение, е да прочета един ред от текстовия файл и да ги запазя в масив, като ги разделя на всеки \t. След това правя същото със следващия ред.

Моят код:

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

Вече се опитах да запиша реда в масив, но това не работи. Някой знае ли как да управлява това?


person user896692    schedule 03.01.2012    source източник
comment
8 отговора, осигуряващи същия подход... трябва ли да въведем флагове за дублиране и за отговорите? :Д   -  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');

ако искате да запазите New Line, отколкото

низ [] съдържание = 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