abc.txt的内容为:出版社,中国,大学,工业,城市,等像这样的一些词,中间有逗号隔开的。
我现在需要用abc.txt中的这些词依次到导入到richtextbox里面的文本进行查找,有的标识成红色。导入进去的文本如下:
[1][澳]欧文·E·休斯.公共管理导论.北京:中国人民大学出版社,2001.
[2][美]珍妮特·V·登哈特,罗伯特·B·登哈特.新公共服务:服务,而不是掌舵.北京:中国工业大学出版社,2004.
[3][美]张庭伟.新自由主义·城市经营·城市管治·城市竞争力.城市规划2004,28[5]:43~50.
程序先拿abc.txt中的“出版社”到这个文本中去找,找到变成红色,然后拿abc.txt中的“中国”到这个文本中去找,直至把在abc.txt中的所有词都找到改变颜色。以下是我写的程序,不知道错在哪里了,还望朋友们帮我指正。
private void button1_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("abc.txt", FileMode.Open);
byte[] b = new byte[fs.Length];
fs.Read(b, 0, b.Length);
string[] s = new string[b.Length];
for (int k = 0; k < b.Length; k++)
{
s[k] = new UTF8Encoding().GetString(b, k, 1);
this.textBox1.Text = s[k];
}
for (int index = 0; index != txts.Length; index++)
{
string txt = txts[index];
this.textBox1.Text = txt;
string searchTxt = this.textBox1.Text; //txt_Search为你查询时输入查询内容的文本框
int txtLength = searchTxt.Length; //查询内容的长度
string ReplaceTxt = this.textBox2.Text;
if (!string.IsNullOrEmpty(searchTxt)) //查询内容的是否为空
{
rtfText.SelectAll(); //选择RichTextBox控件中的所有文本
rtfText.SelectionBackColor = Color.White; //设置 RichTextBox 控件中的文本在选中时的颜色
int searchTxtLength = rtfText.Text.Length; //设置控件中选定的字符数
for (int i = 0; i < searchTxtLength; i++)//RICHTEXTBOX中逐字判断和查询内容的第一个字是否相同
{
if (rtfText.Text[i] == searchTxt[0])
{
string searResult = string.Empty;
searResult += searchTxt[0];
for (int j = 1; j < txtLength; j++) //判断查询内容和文本中哪些相同
{
if (this.rtfText.Text[i + j] == searchTxt[j])
{
searResult += searchTxt[j];
}
}
rtfText.Text = rtfText.Text.Replace("searResult", "ReplaceTxt");
if (searResult.Length == txtLength)
{
rtfText.Select(i, txtLength);
rtfText.SelectionBackColor = Color.White;
rtfText.SelectionFont = new Font("宋体", 15, FontStyle.Bold); //设置想要的样式
this.rtfText.SelectionColor = System.Drawing.Color.Red;
}
}
}