有没有办法拆分数组中的每个字符串并每次检索第 5 位,加到总数中?
Posted
技术标签:
【中文标题】有没有办法拆分数组中的每个字符串并每次检索第 5 位,加到总数中?【英文标题】:Is there a way to split every string in an array and retrieve the 5th bit each time, adding to a total? 【发布时间】:2019-09-10 13:34:12 【问题描述】:大家好,抱歉,我对 C# 和一般编程很陌生。
我有一个正在读取的文本文件,其中包含 10 行(除了第一行是相关的)。
我想用逗号分割每一行(除了第一行,因为它只有一个单词),然后检索每行的第 5 行,并将其添加到总数中。
目前我所能做的基本上是拆分并将相同的值添加到总数中 10 次,而不是将 9 个不同的值加在一起,或者面临“System.IndexOutOfRangeException”。
int totalValues = 0;
string[] larray = lines.ToArray(); //create array from list
string vehicleValue;
for (int i = 0; i < larray.Length; i++)
string[] bits = larray[i].Split(',');
vehicleValue = bits[4];
int vvint = int.Parse(vehicleValue);
totalValues = totalValues + vvint;
totalValue.Text = totalValues.ToString();
就目前而言,上述代码导致“System.IndexOutOfRangeException”突出显示“vehicleValue = bits [4];”
文件的每一行都是这样的,除了第一行。
Car,Ford,GT40,1964,250000,987,Red,A1,2,4,FALSE
我想从这一特定行中得到的值是“250000”——第 5 个。我正在尝试从每一行中获得第 5 个。
【问题讨论】:
bits[4]
是数组中的第五个项目,因为索引从零开始,要获得第四个项目你应该得到bits[3]
如果需要跳过第一个,您可能希望从 1 开始循环?错误发生在哪一行,意思是i
的值是什么,lines[i]
是什么?
【参考方案1】:
您的问题是您还试图解析第一行(其中不包含足够的条目,因此您会遇到异常)。您可以通过从索引 1 开始迭代来跳过第一行:
int totalValues = 0;
string[] larray = lines.ToArray(); //create array from list
string vehicleValue;
for (int i = 1; i < larray.Length; i++)
string[] bits = larray[i].Split(',');
vehicleValue = bits[4];
int vvint = int.Parse(vehicleValue);
totalValues = totalValues + vvint;
totalValue.Text = totalValues.ToString();
【讨论】:
顺便说一句,用Linq,可能写成var totalValues = lines.Skip(1).Sum(line => var bits = line.Split(','); var vehicleValue = bits[4]; var vvint = int.Parse(vehicleValue); return vvint; ); totalValue.Text = totalValues.ToString();
。根据偏好,它可以进一步压缩,所以整个代码类似于totalValue.Text = lines.Skip(1).Sum(x => int.Parse(x.Split(',')[4])).ToString();
。【参考方案2】:
bits[4]
是数组中的第五项,因为索引从零开始,要获得第四项,您应该得到bits[3]
int totalValues = 0;
string[] larray = lines.ToArray(); //create array from list
string vehicleValue;
for (int i = 0; i < larray.Length; i++)
string[] bits = larray[i].Split(',');
vehicleValue = bits[3];
int vvint = int.Parse(bits[3]);
totalValues = totalValues + vvint;
totalValue.Text = totalValues.ToString();
【讨论】:
他说他确实想要第五件。 问题中的错字,现在已修复。对不起!以上是关于有没有办法拆分数组中的每个字符串并每次检索第 5 位,加到总数中?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法用数组构造一个 Firestore 字段(同名)并显示 TableView 中每个字段的每个数组元素
如何拆分camelCase字符串并检查每个拆分词是不是是数组的一部分?
如何在执行 10 倍交叉验证时在每次拆分时获得 Lasso Regression 中的系数?