【问题标题】:Read two lines of data from a text file从文本文件中读取两行数据
【发布时间】:2017-05-10 23:34:46
【问题描述】:

我有一个如下的文本文件:

Ali 

M*59*AB

John

M*68*B

Shirley

F*35*B

Peter

M*88*A

Fiona

F*55*O

Mary

F*46*B

如何有效地从文本文件中读取 两行 数据并将其分配到第一行是名称、第二行是 GENDERWEIGHTBLOODTYPE 的变量中? p>

【问题讨论】:

标签: c# text-files


【解决方案1】:

有很多方法可以做到这一点。所有这些都涉及遍历文本文件的行。

这是一个使用 C# 7 中可用的新 ValueTuple 类型的解决方案。

string path = "file path here";

Dictionary<string, (string Gender, string Weight, string BloodType)> records =
    new Dictionary<string, (string Gender, string Weight, string BloodType)>();

Stack<string> stack =
    new Stack<string>();

foreach (string line in File.ReadLines(path))
{
    if (stack.Count != 1)
    {
        stack.Push(line);
        continue;
    }

    string[] fields = 
        line.Split('*');

    records.Add(
        stack.Pop(), 
        (Gender: fields[0], 
         Weight: fields[1], 
         BloodType: fields[2]));
}

这个 sn-p 一次从文件中流式传输一行。首先它将name 行推入堆栈。一旦堆栈上有名称,下一个循环将其弹出,解析当前行以获取记录信息,并使用name 作为键将其全部添加到records 字典中。

虽然此解决方案可以帮助您入门,但您可以通过对数据环境的一些了解来提高其稳健性。

例如,此解决方案不处理名称或记录信息可能丢失的情况,也不处理记录信息可能不包含所有三个字段的情况。

您应该仔细考虑如何在您的实现代码中处理此类情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2011-02-08
    相关资源
    最近更新 更多