如何使用for语句更改已经数组变量中的名称?

时间:2016-02-04 04:35:30

标签: c# variables for-loop

我在一个文件夹中有4个.txt文档,每个文档有10行信息。我想保存数组中每个文件的每一行。我正在寻找能给我的解决方案:

//four arrays with 10 variables each

vFile_0[0-9]
vFile_1[0-9]
vFile_2[0-9]
vFile_3[0-9]

我可以通过在循环中基于 i 命名每个变量来实现这一目标:

for (int i = 0; i < vCount; i++)
{
    string[] vFileLine_ + i = File.ReadAllLines("document_" + i + ".txt" );
}

这不起作用,有人知道我用代替吗?

编辑:我将进一步详细介绍。我想在文件夹中组织任意数量的.txt文档,其中包含随机数量的行。

示例:

Document 1 has 6 lines of information.
Document 2 has 3 lines of information.
Document 3 has 12 lines of information.
Document 4 has 5 lines of information.

我希望将所有信息存储到数组中,一旦正确完成,变量名称将如下所示:

vFile_0 [5]
vFile_1 [2]
vFile_2 [11]
vFile_3 [4]

如上所示,每个文档都有一个相应的变量名,其数组量等于该文档中的行,这些数组中的每个变量都将该文档中的信息行存储为字符串。这种类型的变量存储的目的是我有一天可以运行程序并检测4个文件,每个文件有10行,或者120,000个文件,每个文件有30,000行。

我现在唯一的问题是以这种方式命名变量。

3 个答案:

答案 0 :(得分:3)

您可以使用双数组替换单个string[][] vFile数组:int fileCount = 0; // replace with actual file count... string [][]vFile = new string[fileCount][]; for (int i = 0; i < fileCount; i++) { vFile[i] = File.ReadAllLines("document_" + i + ".txt"); } ,这些行:

$ses = $sess_ch->setFetchMode(PDO::FETCH_ASSOC);

答案 1 :(得分:0)

您可以使用列表吗?我比数组更喜欢它们,特别是在处理具有可变行数的字符串/文件时。

List<List<String>> allDocuments = new List<List<String>>(); //Note this is a list of lists
for (int i = 0; i < vCount; i++)
{
    string[] tmpRead = File.ReadAllLines("document_" + i + ".txt" );
    List<String> thisDocument = new List<String>();
    foreach(string line in tmpRead) {
        thisDocument.Add(line);
    }
    allDocuments.Add(thisDocument);
}

答案 2 :(得分:0)

字典可能是您问题的最佳通用选项。您的代码如下所示

Dictionary<string, string[]> fileContents = new Dictionary<string, string[]>(); 
for (int i = 0; i < vCount; i++) 
{     
     fileContents[vFileLine_ + i] = File.ReadAllLines("document_" + i + ".txt" ); 
}

这提供了一个通用的解决方案,可以根据需要添加任意数量的文件。