我有一个小问题..
我有一个简单的txt文件,其中包含一些行,但我在努力: 文本文件通过示例链接到3个方法:
方法1调用:“callMath”,2:“callFrench”和3:“callDutch”。
文本文件通过示例看起来像这样:
math_tafels_question1
dutch_dt_question1
french_vocab_question1
math_tafels_question2
dutch_dt_question2
french_vocab_question2
等等。
我的问题是有类似子串命令的东西,如果我调用方法“callMath”它只读取以“math”开头的行吗?如果我调用方法“callFrench”它只读取以“french”开头的行?
你可能会说他们按照10或者其他东西对它们进行排序,但事情是有些问题会被删除,并且会有一些问题被添加,所以我永远不知道问题的确切行号..
希望有人能帮助我吗?;)
答案 0 :(得分:3)
这看起来不像是一个经过深思熟虑的文件格式,但我想你将不得不忍受它。
虽然你想做什么是微不足道的:
var relevantLines = File.ReadLines(filename)
.Where(l => l.StartsWith("math_"));
这会为您IEnumerable<string>
提供filename
中以“math _”开头的所有行。
另请参阅What's the fastest way to read a text file line-by-line?,How to check if a word starts with a given character?。
答案 1 :(得分:0)
您可能正在寻找StartsWith()
方法。以下是您在场景中使用它的方法:
using (var reader = new System.IO.StreamReader(@"C:\yourfile.txt"))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line.StartsWith("math_"))
{
// do something
}
}
reader.Close();
}
然后,您可以将匹配的行放在数组中,并使用callMath()
方法或类似方法返回它们。