[英]Reading a txt file and sending it to an Array C#
我有一個看起來像這樣的文本文件
Words Words
Words Words
Words Words
1 34.4e+1
2 34.3e+1
3 34.2e+1
4 34.1e+1.... // and so on
我需要獲取字符串編號並將其轉換為十進制/雙精度,然后將其發送到一個數組,我可以在其中使用 for 循環之外的數組通過 Enumerable.Chunk 獲取平均值
decimal[] raw = new decimal[] { };
decimal[] rawAvgList = new decimal[] { };
decimal RawAvg = 0m;
try
{
string bPath = aPath + "\\" + fileName.Name + "\\textfilename.txt";
string[] readText = File.ReadAllLines(bPath);
readText = readText.Skip(3).ToArray();
foreach (var line in readText)
{
raw = new decimal[] { Decimal.Parse(line.Substring(9).ToString(), style1) };
for (int i = 0; i < raw.Length; i++)
{
Console.WriteLine("{0} \t {1}", raw[i], i++);
}
}
rawAvgList = raw.Chunk(20).Select(chunk => chunk.Average()).ToArray();
RawAvg = rawAvgList.Average();
}
因此,當我在循環外調用數組時,它只會獲取文本文件中的最后一個數字。 我說的信息錯了嗎? 我發誓我已經嘗試了所有不同的方法來調用文本文件中的號碼,但我總是遇到錯誤。 錯誤范圍從它不喜歡我同時使用 skip 和 substring 到它返回錯誤而不是數字的可枚舉錯誤。 有什么可以幫忙的,謝謝!
您在每次循環迭代時將變量raw
分配給一個新值,從而清除之前存儲的任何值。 最終結果是循環終止后,它將只包含文件最后一行的值,如您所見。
您可以將raw
聲明為List<decimal>
,然后在循環中,您會這樣做
raw.Add(Decimal.Parse(line.Substring(9).ToString(), style1));
這樣,一旦循環完成,您將擁有所有數字,而不僅僅是最后一個。
這是有效的最終產品
List<decimal> raw = new List<decimal>();
decimal[] rawAvgList = new decimal[] { };
decimal RawAvg = 0m;
try
{
string bPath = aPath + "\\" + fileName.Name + "\\textfilename.txt";
string[] readText = File.ReadAllLines(bPath);
readText = readText.Skip(3).ToArray();
foreach (var line in readText)
{
raw.Add(Decimal.Parse(line.Substring(9).ToString(), style1);
}
rawAvgList = raw.Chunk(20).Select(chunk => chunk.Average()).ToArray();
RawAvg = rawAvgList.Average();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.