2014-09-22 27 views
0

我有一個大文件,爲了簡單起見,我只展示了它的一小部分。數據看起來像以下:找到該行中的某些文本,然後用C#返回該行#

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

我需要做的是找到例如NPSER和NASER然後分配值NPSER 10,NASER 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 2014-09-22 23:57:18

+0

作爲一個替代方案,如果你有一個Linux操作系統,我建議你使用nawk/awk命令來讀取一個大的文本文件。 – Gandarez 2014-09-23 00:48:24

回答

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

謝謝你的解決方案。這不是我想要的,但我會問另一個問題,接受你的答案。 – 2014-09-28 03:54:03

相關問題