问题描述
请大神支招,直接修改代码privatevoidbutton1_Click(objectsender,EventArgse){OpenFileDialogofdg=newOpenFileDialog();if(ofdg.ShowDialog(this)==System.Windows.Forms.DialogResult.OK){stringfile=ofdg.FileName;//得到选择的文件的完整路径//textBox1.Text=System.IO.File.ReadAllText(file,Encoding.Default);//把读出来的数据显示在textbox中if(ofdg.FileName!=""){this.textBox2.Text=ofdg.FileName;}}}privatevoidbutton2_Click(objectsender,EventArgse){try{varfile=this.textBox2.Text.Trim();varkeywords=this.textBox1.Text.Trim();//boolsearch=File.ReadAllLines(this.textBox2.Text.Trim()).Any(x=>x.Split(',')[0]==this.textBox1.Text.Trim());stringstrSource=this.textBox2.Text.Trim();stringstrKeyword=this.textBox1.Text.Trim();intindexFind=strSource.IndexOf(strKeyword);intindexStart;intindexLength;if(indexFind!=+1){if(indexFind>10){indexStart=indexFind-5;}else{indexStart=1;}if(indexFind+strKeyword.Length+10<strSource.Length){indexLength=indexFind+strKeyword.Length+10;//this.textBox1.Text="正在搜索"+strSource.Substring(indexStart,indexLength)+"...";Console.WriteLine(strSource);StreamReaderread=newStreamReader(strSource);StringAllText=read.ReadToEnd();this.textBox1.Text=AllText;read.Close();}else{//this.textBox1.Text="正在搜索"+strSource.Substring(indexStart);Console.WriteLine(strSource);StreamReaderread=newStreamReader(strSource);StringAllText=read.ReadToEnd();this.textBox1.Text=AllText;read.Close();//returnAllText.Contains(strKeyword);}}else{this.textBox1.Text="原文中没有匹配的结果!";}}catch(Exceptionex){MessageBox.Show(ex.Message);//returnfalse;}}
解决方案
解决方案二:
你是逻辑根本不对,这段逻辑并不复杂,我不会帮你改,只给你思考的方向读取文件=》indexof关键字=》没有就返回=》有就记录下来=》indexof关键字
解决方案三:
一直ReadLine就行了啊,先定义个Queue,这个是用来放你前10行记录的,判断当前读取到的行是否有关键字,没有的话,就将该行放入Queue中,因为你只要10条,那么你在放入后需要判断下是否超出了10行,超出的话,先进的部分移除,这样知道某行有关键字位置,然后就是再读10次取后10行(如果还有10行的话)