开发者

Search for a keyword in C# and output the line as a string

How would it be possible to search for a string e.g. #Test1 in a text file and then output the line below it as a string e.g.

开发者_如何学Go

Test.txt

#Test1
86/100

#Test2
99/100

#Test3
13/100

so if #Test2 was the search keyword "99/200" would be turned into a string


Parse the file once, store the results in a dictionary. Then lookup in the dictionary.

var dictionary = new Dictionary<string, string>();
var lines = File.ReadLines("testScores.txt");
var e = lines.GetEnumerator();
while(e.MoveNext()) {
    if(e.Current.StartsWith("#Test")) {
        string test = e.Current;
        if(e.MoveNext()) {
            dictionary.Add(test, e.Current);
        }
        else {
            throw new Exception("File not in expected format.");
        }
    }
}  

Now you can just say

Console.WriteLine(dictionary["#Test1"]);

etc.

Also, long-term, I recommend moving to a database.


Use readline and search for the string (ex. #Test1) and then use the next line as input.


If the exactly above is the file format. Then you can use this

1. read all lines till eof in an array.
2. now run a loop and check if the string[] is not empty.
   Hold the value in some other array or list. 
   now you have items one after one. so whenever you use loop and use [i][i+1], 
   it will give you the test number and score.

Hope this might help.


How about RegularExpressions? here's a good example


This should do it for you:

        int lineCounter = 0;
        StreamReader strReader = new StreamReader(path);

        while (!strReader.EndOfStream)
        {
            string fileLine = strReader.ReadLine();
            if (Regex.IsMatch(fileLine,pattern))
            {
                Console.WriteLine(pattern + "found in line " +lineCounter.ToString());
            }
            lineCounter++;
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜