在C#中搜索关键字并将该行输出为字符串

时间:2011-09-25 15:03:45

标签: c# .net

如何搜索字符串,例如#Test1在文本文件中,然后将其下面的行输出为字符串,例如

Test.txt的

#Test1
86/100

#Test2
99/100

#Test3
13/100

所以如果#Test2是搜索关键字“99/200”将变成字符串

5 个答案:

答案 0 :(得分:2)

解析文件一次,将结果存储在字典中。然后在字典中查找。

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.");
        }
    }
}  

现在你可以说

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

另外,长期来看,我建议你搬到数据库。

答案 1 :(得分:1)

使用readline并搜索字符串(例如#Test1),然后使用下一行作为输入。

答案 2 :(得分:0)

如果以上是文件格式。然后你可以使用这个

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.

希望这可能有所帮助。

答案 3 :(得分:-1)

RegularExpressions怎么样? here's a good example

答案 4 :(得分:-1)

这应该适合你:

        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++;
        }