C# txt文件中的多维数组

C# txt文件中的多维数组,c#,C#,我需要从文本文件创建一个二维数组 我的文本文件如下所示 Name1:Id1:Class1:Status1 Name2:Id2:Class2:Status2 array = {{name1,id1,class1,status1},{name2,id2,class2,status2}} 等等 我想让我的多维数组像这样 Name1:Id1:Class1:Status1 Name2:Id2:Class2:Status2 array = {{name1,id1,class1,status1},{na

我需要从文本文件创建一个二维数组

我的文本文件如下所示

Name1:Id1:Class1:Status1
Name2:Id2:Class2:Status2
array = {{name1,id1,class1,status1},{name2,id2,class2,status2}}
等等

我想让我的多维数组像这样

Name1:Id1:Class1:Status1
Name2:Id2:Class2:Status2
array = {{name1,id1,class1,status1},{name2,id2,class2,status2}}

我看过其他与之相关的帖子,但non似乎有所帮助,这就是为什么再次发布到锯齿阵列非常容易的原因。从锯齿状数组到二维数组只需要一些假设:比如所有行的项数都相同,并且在创建数组时知道有多少行和列

将帮助您创建锯齿阵列。一个简单的循环将帮助您创建多维数组

using System;
using System.Linq;

class Program {
    static void Main(string[] args) {
        string input = @"Name1:Id1:Class1:Status1
Name2:Id2:Class2:Status2";

        var jagged = input
                        .Split(new string[] { Environment.NewLine }, StringSplitOptions.None)
                        .Select(s => s.Split(':').ToArray())
                        .ToArray();

        var multi = new string[jagged.Length, jagged[0].Length];
        for (int i = 0; i < jagged.Length; ++i) {
            for (int j = 0; j < jagged[0].Length; ++j) {
                multi[i, j] = jagged[i][j];
                Console.WriteLine("[{0},{1}] = {2}", i, j, multi[i, j]);
            }
        }
    }
}
使用系统;
使用System.Linq;
班级计划{
静态void Main(字符串[]参数){
字符串输入=@“名称1:Id1:Class1:Status1
名称2:Id2:Class2:Status2”;
变量锯齿=输入
.Split(新字符串[]{Environment.NewLine},StringSplitOptions.None)
.Select(s=>s.Split(“:”).ToArray()
.ToArray();
var multi=新字符串[jagged.Length,jagged[0].Length];
对于(int i=0;i
最好使用类似下面代码的列表对象

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            List<List<string>> data = new List<List<string>>();
            StreamReader reader = new StreamReader(FILENAME);
            string line = "";
            while ((line = reader.ReadLine()) != null)
            {
                List<string> lineArray = line.Split(new char[] { ':' }).ToList();
                data.Add(lineArray);
            }
            reader.Close();

        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.txt”;
静态void Main(字符串[]参数)
{
列表数据=新列表();
StreamReader=新的StreamReader(文件名);
字符串行=”;
而((line=reader.ReadLine())!=null)
{
List lineArray=line.Split(新字符[]{':'}).ToList();
数据。添加(线性阵列);
}
reader.Close();
}
}
}

我假设所有行的格式都相同。我们可以简单地遍历以下行:

string[] lines = File.ReadAllLines(filename);
int len0 = lines.Length;
int len1 = lines[0].Split(':').Length;
string[,] array = new string[len0, len1];
for (int i= 0; i < len0; i++)
{
    string line = lines[i];
    string[] fields = line.Split(':');
    if (fields.Length != len1)
        continue; // to prevent error for the lines that do not meet the formatting
    for(int j = 0; j < len1; j++)
    {
        array[i,j] = fields[j];
    }
}
string[]line=File.ReadAllLines(文件名);
int len0=行。长度;
int len1=行[0]。拆分(“:”)。长度;
字符串[,]数组=新字符串[len0,len1];
对于(int i=0;i
所有行是否都包含所有列?(如果不是,您可能希望选择锯齿数组而不是二维数组),您可以使用File.ReadAllText将其作为一个完整换行的大字符串,或者使用File.ReadAllLines将其拆分为一个字符串数组,如Ercan Peker所示,每行一个。