如何使用文本文件中的数据提供C#应用程序?

时间:2013-10-04 08:58:08

标签: c#

我有一个文本文件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(' ');

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

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

4 个答案:

答案 0 :(得分: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));
}

这可行或任何奇数行(对象的坐标和对的一行)。

答案 1 :(得分: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]));

答案 2 :(得分: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]));

答案 3 :(得分: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));
        }