0

我使用以下代码将数据存储在数组中,然后将其打印出来。

Person[] people = {new Person( "Loki", "Lo", "Asgard", 2050),
                              new Person( "Thor", "Th", "Asgard", 2050),
                              new Person( "Iron", "Man", "Il", 4050),
                              new Person( "The", "Hulk", "Green", 1970)};

现在我想从文本行中读取这些信息并使用相同的数组。如何?

txt文件看起来像这样

The Hulk Green 1970
Iron Man Il 4050
Thor Th Asgard 2050
Loki Lo Asgard 2050

我正在考虑将单词存储在字符串数组中,然后对每个单词使用 [0]、[1] 等。但是循环会导致问题,因为我只想使用一个“人”。有什么建议么?

4

2 回答 2

2

我将添加一个Person构造函数,该构造函数采用“行”数据并相应地对其进行解析。

然后你可以这样做:

var people = File.ReadLines("yourFile.txt")
                 .Select(line => new Person(line))
                 .ToArray();

如果您不想要额外的构造函数:

var people = File.ReadLines("yourFile.txt")
                 .Select(line => line.Split())
                 .Select(items => new Person(item[0], item[1], item[2], Convert.ToInt32(item[3]))
                 .ToArray();

您应该注意,这里提供的解决方案都没有良好的异常处理。

于 2012-11-19T21:07:15.707 回答
1

这是一个不使用 Linq 的解决方案

Person[] people= new Person[4];
using(var file = System.IO.File.OpenText(_LstFilename))
{
   int j=0;
 while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // ignore empty lines
        if (line.Length > 0)
        {    

            string[] words = line.Split(' ');
             Person per= new Person(words[0], words[1], words[2], Convert.ToInt32(words[3]));

             people[j]=per;
             j++

        }

}
于 2012-11-19T21:15:29.580 回答