2014-09-22 1 views
0

У меня большой файл, и для простоты я просто показываю небольшую его часть. Данные выглядит следующим образом:Найдите определенный текст в строке, а затем верните эту строку в C#

NPSER NASER NQSER 
10 5 3 
TSSR MPSER JDNSR 
15 10 6 

Что мне нужно сделать, это найти, например, NPSER и Насер, а затем присвоить значения NPSER как 10, Насер, как 5 и NQSER как 3. Для этого небольшого набора данных я мог бы выполните следующие действия:

TextReader infile = new StreamReader(fileName); 
    string line; 
    int NPSER, NASER, NQSER; 
    line = infile.ReadLine(); 

    string[] words = line.Split('\t'); 

    NPSER = Convert.ToInt32(words[0]); 
    NASER = Convert.ToInt32(words[1]); 
    NQSER = Convert.ToInt32(words[2]); 
    infile.Close(); 

Вместо чтения каждой строки и присвоения значения, я хочу, чтобы написать функцию, которая будет автоматически загрузит строку при поиске Шифрование до трех слов в строке, которые были бы проще и эффективнее для длительного применения ,

Буду признателен за другие методы.

+0

ключи уникальны для файла или только линии? – spender

+0

В качестве альтернативы, если у вас есть операционная система Linux, я бы рекомендовал вам использовать команду nawk/awk для чтения большого текстового файла. – Gandarez

ответ

1

Было бы проще, если вы можете использовать LINQ:

var line = File.ReadLines("path") 
    .SkipWhile(line => !line.Contains("NPSER")) // change this condition to suit your needs 
    .Skip(1) 
    .First(); 

var values = line.Split(new[] { ' '},StringSplitOptions.RemoveEmptyEntries) 
      .Select(int.Parse) 
      .ToArray(); 

int NPSER = values[0]; 
int NASER = values[1]; 
int NQSER = values[2]; 
+0

Благодарим вас за решение. Это не совсем то, чего я хочу, но я задам еще один вопрос, как принять ваш ответ. –