【问题标题】:Reading a text file and inserting information into a new object读取文本文件并将信息插入新对象
【发布时间】:2013-09-19 05:42:45
【问题描述】:

所以我有一个文本文件,其中包含以下格式的信息,包括姓名、电子邮件和电话号码。

Bill Molan, Bill.Molan@gmail.com, 612-789-7538
Greg Hanson, Greg.Hanson@gmail.com, 651-368-4558
Zoe Hall, Zoe.Hall@gmail.com, 952-778-4322
Henry Sinn, Henry.Sinn@gmail.com, 651-788-9634
Brittany Hudson, Brittany.Hudson@gmail.com, 612-756-4486

当我的程序启动时,我想读取这个文件并将每一行变成一个新的 Person(),我最终会将它添加到一个列表中。我想读取每一行,然后用逗号分隔每个字符串放入Person()的构造函数中,这是一个基本类:

public PersonEntry(string n, string e, string p)
{
    Name = n;
    Email = e;
    Phone = p;
}

我做了一些查找,我认为使用流式阅读器可以读取文本文件,但我不确定从这里去哪里。

【问题讨论】:

  • 您可能应该删除他们的个人信息并使用虚假数据...
  • 澄清一下,以上姓名、邮箱、电话号码都是编造的。

标签: c# file-io separator


【解决方案1】:

您可以使用以下方法:

 

    string line;
    List listOfPersons=new List();

    // Read the file and display it line by line.
    System.IO.StreamReader file = 
        new System.IO.StreamReader(@"c:\yourFile.txt");
    while((line = file.ReadLine()) != null)
    {
        string[] words = line.Split(',');
        listOfPersons.Add(new Person(words[0],words[1],words[2]));
    }

    file.Close();

 

【讨论】:

    【解决方案2】:

    假设逗号永远不会出现在数据中: 使用 StreamReader.ReadLine 读取每一行文本。对于每一行文本,使用 string.Split 将行拆分为字符串数组,使用逗号作为拆分字符。现在你有一个由 3 个字符串组成的数组,其中 [0] 是姓名,[1] 是电子邮件,[2] 是电话。

    【讨论】:

    • 我理解这一切的伪代码,但我不知道 x# 的语法来做到这一点。不过谢谢。
    【解决方案3】:

    你可以阅读下面的所有行 // 假设所有行总是有 3 个值

    var allLines  = File.ReadAllLines(path);
    var listOfPersons = new List<Person>();
    foreach(var line in allLines)
    {
        var splittedLines = line.Split(new[] {","})
         if(splittedLines!=null && splittedLines.Any())
          {
              listOfPersons.Add( new Person {
                                               Name = splittedLines[0],
                                               Email = splittedLines .Length > 1 ?splittedLines[1]:null,
                                                Phone = splittedLines .Length > 2? splittedLines[2]:null,
                                             });
          }
    
    }
    

    此代码是一个示例,必须检查数组长度等各种条件,也请检查

    【讨论】:

    • 所以每一行在allLines中都是不同的值?然后你遍历每一行,用逗号分隔,然后添加,这是有道理的。我不明白 > 1 ? > 2 ?尽管。只是寻求澄清,谢谢!
    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多