我需要从文本文件创建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
我看过其他与此相关的帖子,但似乎没有帮助,这就是为什么再次发布
答案 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];
}
}