2015-10-30 47 views
0

我有文件包含兩行和每行包含200個字段和我想將它拆分成陣列得到錯誤的數據而分割文件成陣列

using (StreamReader sr = File.OpenText(pathSensorsCalc)) 
{ 
    string s = String.Empty; 
    while ((s = sr.ReadLine()) == null) { }; 
    String line1 = sr.ReadToEnd(); 
    String line2 = sr.ReadToEnd(); 
    CalcValue[0] = new String[200]; 
    CalcValue[1] = new String[200]; 
    CalcValue[0] = line1.Split(' '); 
    CalcValue[1] = line2.Split(' '); 
} 

上面的代碼後,CalcValue[1]是空的和CalcValue[0]包含第二行的數據(第一行的例子)。有任何想法嗎?

回答

2

當使用

sr.ReadToEnd() 

,你正在閱讀你的輸入流的末尾。也就是說,在第一次致電

String line1 = sr.ReadToEnd() 

您的信息流已處於最後位置。用ReadLine()呼叫替換您的ReadToEnd()呼叫。這應該工作。

0

在Windows操作系統中,新行由\r\n表示。所以你不應該用空格分隔行(" ")。

這意味着您應該使用Split方法的另一個重載 - Split(char[], StringSplitOptions)。第一個參數是你想要分割的字符,第二個是選項。你爲什麼需要這些選項?因爲如果你用2個連續字符分割,你會得到一個空的元素。

所以,現在很容易理解這段代碼爲什麼:

line1.Split (new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries); 
+0

你也可以使用常量Environment.NewLine而不是直接創建一個字符數組,如果我沒看錯的。 –

+0

@ThomasSymalla是的你是對的。但我只想讓OP瞭解更多關於Windows操作系統的知識,而不是不知道「Environment.NewLine」的價值。 – Sweeper

+0

@Sweeper 我確實如你所說,我現在有問題,CalcValue [1] [199]包含此值:15139.5 ;;;;;;;;;;; (爲什麼所有這些逗號都出現了?)謝謝! – user687459