读取文本文件中的特定行

时间:2013-11-13 03:32:37

标签: c# text-files

好的,所以我有一个程序需要从一个看起来像这样的文本文件中读取

[Characters]
John
Alex
Ben

[Nationality]
Australian
American
South African

[Hair Colour]
Brown
Black
Red

我想要做的是只有一种方法根据传递的参数读取一个部分。

这可能吗?如何?

3 个答案:

答案 0 :(得分:6)

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

items将有:

Australian 
American 
South African 

答案 1 :(得分:2)

您可以使用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>

答案 2 :(得分:1)

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

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];
    }
}