我正在尝试创建一个读取文本文件的应用程序,其形式如下:
Outremont,3456,4370,15342,546
St-Leonard,6098,12765,10876,1024
Chapleau,6087,6087,6087,6087
它基本上在每一行包含一个城镇名称和4个值,代表一个政党的投票数。
我需要做的是从每一行中检索每个值,然后将它们一起添加。
示例:我将从第一行(3457)检索第二个值,从第二行(6098)检索第二个值并将它们一起添加。
到目前为止,我知道如何将一行拆分成一个数组,这样我才能得到。
我使用streamreader
检索文本文件的信息,然后使用Split
方法拆分一行。
到目前为止,我的代码看起来像这样
public partial class Form1 : Form
{
string[] mots;
private void btnLire_Click(object sender, EventArgs e)
{
StreamReader reader = new StreamReader(txtCheminAccess.Text);
while (!reader.EndOfStream)
{
string sVal = reader.ReadLine();
if (sVal.Length > 0)
{
mots = sVal.Split(',');
}
}
}
当然,我无法检索每一行,但一次只检索一行。在这种情况下,如果你自己参考文本文件
Outremont,3456,4370,15342,546
St-Leonard,6098,12765,10876,1024
Chapleau,6087,6087,6087,6087
我的名为mots
的数组只包含最后一行。 Chapleau,6087,6087,6087,6087
如何将这个1维数组放入二维数组中,使其看起来像Array[textfile Lines,mots]
?
答案 0 :(得分:1)
如果你想要的只是总数,那么就没有必要创建一个二维数组。创建一个总计数组,然后在阅读时添加每个项目。像这样:
int totals[] = new totals[4];
foreach (var sVal in File.ReadLines(txtCheminAccess.Text))
{
if (sVal.Length > 0)
{
mots = sVal.Split(',');
for (int i = 1; i < 5 && i < sVal.Length; ++i)
{
int val;
if (int.TryParse(sVal[i], out val))
{
totals[i-1] += val;
}
}
}
}
File.ReadLines
逐行读取文件。这是您创建的StreamReader
循环的非常方便的简写。
在读取该行后,它会以拆分方式拆分,然后代码通过拆分数组解析整数并将它们添加到总计中。