| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1119 人关注过本帖
标题:怎么实现依次查找功能??
只看楼主 加入收藏
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
收藏
 问题点数:0 回复次数:6 
怎么实现依次查找功能??

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;

}
}
}

搜索更多相关主题的帖子: txt abc 中国 工业 
2007-10-10 16:01
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
收藏
得分:0 

我沒測試妳試試下面的代碼。妳的太那個了看不清楚
string strMach = File.ReadAllText("abc.txt", Encoding.UTF8);
string[] strMachWords = strMach.Split(',');

richTextBox1.SelectAll();
richTextBox1.SelectionBackColor = Color.White;
foreach (string strMachWord in strMachWords)
{
int intWordIndex = 0;
while (intWordIndex >= 0)
{
intWordIndex += richTextBox1.Text.Substring(intWordIndex).IndexOf(strMachWord);
if (intWordIndex >= 0)
{
richTextBox1.Select(intWordIndex, strMachWord.Length);
richTextBox1.SelectionBackColor = Color.White;
richTextBox1.SelectionFont = new Font("宋体", 15, FontStyle.Bold); //设置想要的样式
richTextBox1.SelectionColor = System.Drawing.Color.Red;
}
}
}


すばらしいコードを書き出すのは楽しい事です
2007-10-10 17:29
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
收藏
得分:0 
妳測試一下上面的代碼吧。我下班了。應該大體思路上沒有問題。

すばらしいコードを書き出すのは楽しい事です
2007-10-10 17:36
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
收藏
得分:0 
好像还是不行啊,斑主在吗?帮忙看一下哦。谢了!
2007-10-11 14:15
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
收藏
得分:0 
妳所說的不行指的是什麼呢
我感覺學編程如果不親自動腦動手做一做是不行的。每個人都有一個思維模式。
如果總是看別人的代碼跟著別人的思維走的話是很難進步的。

すばらしいコードを書き出すのは楽しい事です
2007-10-11 14:20
aubblove
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2007-8-18
收藏
得分:0 

其实思路也是有的,自己写出来的总是达不到想要的结果,所以只好请教一下你们。
我把我的程序代码发到你邮箱crazycd@hotmail.com,你帮我看一下哪里错了。该怎么改,好吗?

2007-10-11 14:27
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
收藏
得分:0 

string strMach = File.ReadAllText("../../abc.txt", Encoding.GetEncoding(0));
//Encoding妳可以自己改
string[] strMachWords = strMach.Split(',');

//注意這裡是半角逗號
rtfText.SelectAll();

rtfText.SelectionBackColor = Color.White;

foreach (string strMachWord in strMachWords)

{

int intWordIndex = 0;
int intTemp = 0;
while (intTemp >= 0)

{
intTemp = rtfText.Text.Substring(intWordIndex).IndexOf(strMachWord);

intWordIndex += intTemp;
if (intTemp >= 0)

{

rtfText.Select(intWordIndex, strMachWord.Length);

rtfText.SelectionBackColor = Color.White;

rtfText.SelectionFont = new Font("宋体", 15, FontStyle.Bold); //
rtfText.SelectionColor = System.Drawing.Color.Red;

intWordIndex += strMachWord.Length;

}

}

}


原來的代碼確實有點問題,現在改好了。我測試通過了。


すばらしいコードを書き出すのは楽しい事です
2007-10-11 17:21
快速回复:怎么实现依次查找功能??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026581 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved