txt文件中的多维数组

时间:2018-10-13 14:23:48

标签: c#

我需要从文本文件创建2D数组。

我的文本文件看起来像这样

.container {
  display: flex;
  flex-direction: column;
}

.header {
  background-color: green;
  box-shadow: 5px 10px rgba(0, 0, 0, 0.5);
  height: 60px;
  width: 100%;
    z-index: 1;
        
}

.body {
  height: 300px;
  width: 100%;
  background-color: red;
  position: relative;
}

以此类推

我希望我的多维数组做这样的事情

Name1:Id1:Class1:Status1
Name2:Id2:Class2:Status2

我看过其他与此相关的帖子,但似乎没有帮助,这就是为什么再次发布

3 个答案:

答案 0 :(得分:0)

进入锯齿状阵列非常容易。从锯齿状数组到2D数组仅需要一些假设:例如所有行都具有相同数量的项目,并且您知道创建数组时有多少行和列。

string.Split将帮助您创建锯齿状的数组。一个简单的循环将帮助您创建多维数组。

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]);
            }
        }
    }
}

答案 1 :(得分:0)

最好使用下面的代码之类的List对象

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();

        }
    }
}

答案 2 :(得分:0)

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

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];
    }
}