我有一个文本文件,如下所示:
@font-family
如何有效地从文本文件中读取两行数据并分配到第一行是名称的变量,第二行是GENDER WEIGHT BLOODTYPE?
答案 0 :(得分:-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]));
}
此代码段一次一个地从文件中流式传输线条。首先,它将name
行推入堆栈。一旦堆栈上有名称,下一个循环将其弹出,解析当前行以获取记录信息,并使用records
作为键将其全部添加到name
字典中。
虽然这个解决方案可以帮助您入门,但有一些显而易见的领域可以通过深入了解您的数据环境来提高其稳定性。
例如,此解决方案不处理可能缺少名称或记录信息的情况,也不处理记录信息可能没有所有三个字段的情况。
您应该仔细考虑如何在实施代码中处理此类案例。