1维数组到2维数组

时间:2014-10-17 00:15:08

标签: c# arrays streamreader

我正在尝试创建一个读取文本文件的应用程序,其形式如下:

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]

1 个答案:

答案 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循环的非常方便的简写。

在读取该行后,它会以拆分方式拆分,然后代码通过拆分数组解析整数并将它们添加到总计中。