0

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

[Characters]
John
Alex
Ben

[Nationality]
Australian
American
South African

[Hair Colour]
Brown
Black
Red

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

这可能吗?如何?

4

3 回答 3

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 
于 2013-11-13T03:36:34.327 回答
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>
于 2013-11-13T03:37:02.053 回答
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];
    }
}
于 2013-11-13T03:53:44.773 回答