我遇到了C#的问题。
我正在编写代码来搜索文本文件,直到找到某个单词,然后代码应移动三行并读取第四行,然后继续搜索以再次找到该单词。 现在我不知道如何浏览文件(向前和向后)到我想要的行。
有人可以帮忙吗?
答案 0 :(得分:1)
您可以这样做:
var text = File.ReadAllLines("path"); //read all lines into an array
var foundFirstTime = false;
for (int i = 0; i < text.Length; i++)
{
//Find the word the first time
if(!foundFirstTime && text[i].Contains("word"))
{
//Skip 3 lines - and continue
i = Math.Min(i+3, text.Length-1);
foundFirstTime = true;
}
if(foundFirstTime && text[i].Contains("word"))
{
//Do whatever!
}
}
答案 1 :(得分:0)
// read file
List<string> query = (from lines in File.ReadLines(this.Location.FullName, System.Text.Encoding.UTF8)
select lines).ToList<string>();
for (int i = 0; i < query.Count; i++)
{
if (query[i].Contains("TextYouWant"))
{
i = i + 3;
}
}
答案 2 :(得分:0)
您的要求声明您正在搜索特定字词。如果这是真的而你没有寻找特定的字符串,那么检查的答案是错误的。相反,你应该使用:
string[] lines = System.IO.File.ReadAllLines("File.txt");
int skip = 3;
string word = "foo";
string pattern = string.Format("\\b{0}\\b", word);
for (int i = 0; i < lines.Count(); i++)
{
var match = System.Text.RegularExpressions.Regex.IsMatch(lines[i], pattern);
System.Diagnostics.Debug.Print(string.Format("Line {0}: {1}", Array.IndexOf(lines, lines[i], i) + 1, match));
if (match) i += skip;
}
如果你使用string.contains方法并且你要搜索的单词是“man”,而你的文本某处包含“mantle”和“manual”,则string.contains方法将返回true。