将文件中的数据加载并解析到数组中
Loading and parsing data from file into array
我正在尝试将 DAT 文件中的数据加载到数组中。
我的数据由多行组成,格式如下:
param_1::param_2::value
我想读入这些数据并将其转换为二维数组(或其他合适的格式),所以我将:
myData[param_1,param_2]=value
目前我正在尝试使用 StreamReader 将文件读入字符串数组,但不知道如何将数据从字符串转换为我需要的格式。
这是我现在正在使用的阅读部分。我需要做什么才能正确解析数据?
StreamReader reader = new StreamReader("file.dat");
string strAllFile = reader.ReadToEnd().Replace("\r\n", "\n").Replace("\n\r", "\n");
string[] arrLines = strAllFile.Split(new char[] { '\n' });
感谢您的帮助!
你可以这样做,这个 Linq
声明 returns 文件中每一行的 param1, param2, value
集合。
var dataList = File.ReadAllLines("file.dat") // Read lines
.Select(l=> l.Split(new string[] { "::" }, StringSplitOptions.None)) // split each line
.Select(l=> new
{
param1 = l[0],
param2 = l]1],
value = l[2]
})
.ToList();
现在您可以使用
迭代列表
foreach(var item in dataList)
{
// logic here.
myData[item.param1,item.param2]=item.value
}
如果 myData
的行数和列数已知,您可以像这样简单地编写函数:
public void parseString(string[] lines)
{
int[,] myData = new int[100, 100];
foreach (string s in lines)
{
string[] data = s.Split("::");
int x = Convert.ToInt32(data[0]);
int y = Convert.ToInt32(data[1]);
int value = Convert.ToInt32(data[2]);
myData[x, y] = value;
}
}
我正在尝试将 DAT 文件中的数据加载到数组中。
我的数据由多行组成,格式如下:
param_1::param_2::value
我想读入这些数据并将其转换为二维数组(或其他合适的格式),所以我将:
myData[param_1,param_2]=value
目前我正在尝试使用 StreamReader 将文件读入字符串数组,但不知道如何将数据从字符串转换为我需要的格式。
这是我现在正在使用的阅读部分。我需要做什么才能正确解析数据?
StreamReader reader = new StreamReader("file.dat");
string strAllFile = reader.ReadToEnd().Replace("\r\n", "\n").Replace("\n\r", "\n");
string[] arrLines = strAllFile.Split(new char[] { '\n' });
感谢您的帮助!
你可以这样做,这个 Linq
声明 returns 文件中每一行的 param1, param2, value
集合。
var dataList = File.ReadAllLines("file.dat") // Read lines
.Select(l=> l.Split(new string[] { "::" }, StringSplitOptions.None)) // split each line
.Select(l=> new
{
param1 = l[0],
param2 = l]1],
value = l[2]
})
.ToList();
现在您可以使用
迭代列表foreach(var item in dataList)
{
// logic here.
myData[item.param1,item.param2]=item.value
}
如果 myData
的行数和列数已知,您可以像这样简单地编写函数:
public void parseString(string[] lines)
{
int[,] myData = new int[100, 100];
foreach (string s in lines)
{
string[] data = s.Split("::");
int x = Convert.ToInt32(data[0]);
int y = Convert.ToInt32(data[1]);
int value = Convert.ToInt32(data[2]);
myData[x, y] = value;
}
}