使用C#移动文本文件

时间:2013-05-23 16:20:45

标签: c# file-handling

我遇到了C#的问题。

我正在编写代码来搜索文本文件,直到找到某个单词,然后代码应移动三行并读取第四行,然后继续搜索以再次找到该单词。 现在我不知道如何浏览文件(向前和向后)到我想要的行。

有人可以帮忙吗?

3 个答案:

答案 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。