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