好的,所以我有一个程序需要从一个看起来像这样的文本文件中读取
[Characters]
John
Alex
Ben
[Nationality]
Australian
American
South African
[Hair Colour]
Brown
Black
Red
我想要做的是只有一种方法根据传递的参数读取一个部分。
这可能吗?如何?
答案 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];
}
}