C# 读取文本文件中的特定行

C# 读取文本文件中的特定行,c#,text-files,C#,Text Files,好的,我有一个程序,需要从一个文本文件中读取,如下所示 [Characters] John Alex Ben [Nationality] Australian American South African [Hair Colour] Brown Black Red 我想做的是,只有一个方法根据传递的参数读取节 这可能吗?如何实现 var sectionName = "[Nationality]"; string[] items = File.ReadLines(fileName)

好的,我有一个程序,需要从一个文本文件中读取,如下所示

[Characters]
John
Alex
Ben

[Nationality]
Australian
American
South African

[Hair Colour]
Brown
Black
Red
我想做的是,只有一个方法根据传递的参数读取节

这可能吗?如何实现

var sectionName = "[Nationality]";
string[] items = 
    File.ReadLines(fileName)                           //read file lazily 
        .SkipWhile(line => line != sectionName)        //search for header
        .Skip(1)                                       //skip header
        .TakeWhile(line => !string.IsNullOrEmpty(line))//take until next header
        .ToArray();                                    //convert to array
项目将包括:

Australian 
American 
South African 

您可以使用LINQ这样做:

var sectionCharacters = File.ReadLines(@"c:\myfile.txt")
    .SkipWhile(s => s != "[Characters]") // Skip up to the header
    .Skip(1)                             // Skip the header
    .TakeWhile(s => s.Length != 0)       // Take lines until the blank
    .ToList();                           // Convert the result to List<string>

我知道这不是最好的方法,但如果你刚开始编程,你会更容易做到这一点。通过添加几行额外的代码,您可以创建一个从文本文件中提取特定块的方法

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(ExtractLine("fileName.txt", 4));
        Console.ReadKey();
    }

    static string ExtractLine(string fileName, int line)
    {
        string[] lines = File.ReadAllLines(fileName);

        return lines[line - 1];
    }
}

我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该这样做。你尝试了什么?你有什么问题?你是在问如何打开文件吗?如何读一行?如何在线路中循环?如何检查分区?它看起来像INI文件。为什么不使用INI文件解析器呢?好的,那么如何将项目转换为字符串[]?