簡體   English   中英

讀取 txt 文件並將其發送到數組 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM