-3

我有一个文本文件 data.txt,其中包含以下数据:

5 5
1 2 N
LMLMLMLMM
3 3 E
MMRMMRMRRM

我的应用程序可以从文件中读取数据:

System.IO.StreamReader = dataFile = new System.IO.StreamReader("C\\data.txt");
string myData = dataFile.ReadToEnd();               

我可以拆分字符串:

Array splitString = myData.Split(' ');

现在我想在我的程序中使用拆分后的字符串作为值,如下所示:

     Grid viewGrid = new Grid(Coordinates(5,5));
     viewGrid.AddToCollection(new Rov(1,2,'N',"LMLMLMLMM"));
     viewGrid.AddToCollection(new Rov(3,3,'E',"MMRMMRMRRM"));
4

4 回答 4

2

我会选择类似的东西

List<string> Data = System.IO.File.ReadAllLines(filename);

string[] coordLine = Data[0].Split(' ');
Grid viewGrid = new Grid(Coordinates(int.Parse(coordLine [0]), int.Parse(coordLine [1]));

for (int i = 1; i < Data.Count / 2; i++)
{
    string[] line1 = Data[2 * i - 1].Split(' ');
    string line2 = Data[2 * i];

    viewGrid.AddToCollection(new Rov(Int32.Parse(line1[0]), Int32.Parse(line1[1]), line1[2], line2));
}

这适用于任何奇数行(一行用于坐标和对象对)。

于 2013-10-04T09:19:47.110 回答
1

如果您的文本文件始终采用相同的格式,您可以轻松地使用字符串数组并对出现元素的顺序进行硬编码。要将字符串转换为数字,您可以使用Int32.Parse('1').

Grid viewGrid = new Grid(Coordinates(Int32.Parse(splitString[0]), Int32.Parse(splitString[1])));
viewGrid.AddToCollection(new Rov(Int32.Parse(splitString[2]), Int32.Parse(splitString[3]), splitString[4], splitString[5]));
viewGrid.AddToCollection(new Rov(Int32.Parse(splitString[6]), Int32.Parse(splitString[7]), splitString[8], splitString[9]));
于 2013-10-04T09:07:19.733 回答
1
Array splitString = myData.Split('\n');
        Array cords = splitString[0].ToString().Split(' ');
        int cordX = Convert.ToInt32(cords[0]);
        int cordY = Convert.ToInt32(cords[1]);

        Grid viewGrid = new Grid(Coordinates(cordX, cordY));

        for (int i = 1; i < splitString.Length; i++)
        {
            Array nxtSplit = splitString[i].ToString().Split(' ');
            int x = int.Parse(nxtSplit[0]);
            int y = int.Parse(nxtSplit[1]);
            char c = Convert.ToChar(nxtSplit[2]);
            i++;
            string s = splitString[i].ToString();
            viewGrid.AddToCollection(new Rov(x, y, c, s));
        }
于 2013-10-04T09:23:47.640 回答
1
Grid viewGrid = new Grid(Coordinates(int.Parse(splitString[0]), int.Parse(splitString[1])));
viewGrid.AddToCollection(new Row(int.Parse(splitString[2]), int.Parse(splitString[3]),splitString[4],splitString[5]));
viewGrid.AddToCollection(new Row(int.Parse(splitString[6]), int.Parse(splitString[7]),splitString[8],splitString[9]));
于 2013-10-04T09:08:42.650 回答