关于RichtextBox的Find函数使用的问题

blessedness 2003-07-04 11:38:24
我遇到的困难是这样的
我想对一个Htm文件的源代码进行编辑,比如查找其中的全部<span></span>标签对,并对它们进行编辑。我首先将Htm文件加载到一个Richtextbox中,用find函数找到第一个<span>,假设位置是12000,接着需要找到下一个标签</span>,这时候,查找位置的初始点应该是<span>的位置12000,但是find函数的第一个参数是将汉字看作一个字符,第二个参数是将汉字看作两个字符,这样,第二个参数是12000的时候,函数实际上可能是从第11000个字符开始查找的,如果前面有</span>标签的话,函数返回的位置值就是错误的,设置可能陷入死循环。如何解决这个问题,可以在文件中找到所有<span>标签对的起止位置?请大家帮忙,谢谢。
我及时结帖的。
...全文
321 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
blessedness 2003-07-09
  • 打赏
  • 举报
回复
非常感谢大家的帮助,特别是rainstormmaster网友.对qingming81(晴明)网友的积极帮忙,我也非常感谢.
rainstormmaster 2003-07-06
  • 打赏
  • 举报
回复
参考:
RichTextBox的Find方法如何应用于中文
http://www.china-askpro.com/msg16/qa11.shtml

你也可以用instr试试


blessedness 2003-07-04
  • 打赏
  • 举报
回复
非常感谢,但是你说得方法是行不通的,其实你说的方法正是我用过的,
比如我想查找所有的<span>的起始位置
当查找到N个<span>的时候,它的位置是Pos(N)
接着,我想查找第N+1个,Pos(N+1)=.find("<span>",Pos(N)+len("span")),这时候,由于find的第一个参数和第二个参数对待汉字的不同,Pos(N+1)可能比Pos(N)还小
估计你没有编过类似的程序,对这个问题还没有真实认识,所以认为可以不理这个参数
不管怎么说,还是非常感谢你的热心.
qingming81 2003-07-04
  • 打赏
  • 举报
回复
下一次查找从这个.selstart + len("头一次查找的词")的地方开始。即设置
richtextbox1.selstart = position + len("<span>")
qingming81 2003-07-04
  • 打赏
  • 举报
回复
可以不管它的什么参数不参数,当第一次查找完成时,定义一个静态变量保存这时的.selstart。再用.find

static position as long
LuBingLin 2003-07-04
  • 打赏
  • 举报
回复
请加载Text1,Command1及RichTextBox1试加入以下代码:
Private Sub Command1_Click()
With RichTextBox1
.SelStart = .SelStart + .SelLength
.Find Text1.Text, , Len(.TextRTF)
If .SelLength = 0 Then .SelStart = 0
End With
End Sub
sworddx 2003-07-04
  • 打赏
  • 举报
回复
用unicode就没问题了
jordi2014 2003-07-04
  • 打赏
  • 举报
回复
关注一下。
qingming81 2003-07-04
  • 打赏
  • 举报
回复
我认为用那两个参数是比较麻烦的,还有一个vbcrlf(回车换行符)的len是2(不算末尾自动添加的换行符),这些隐藏(看不到)的字符处理更麻烦。
qingming81 2003-07-04
  • 打赏
  • 举报
回复
我是每次.find后,按当前的.selstart + len("<span>")将richtextbox1.text截断,下次查是在下一个截断的字符中查,好象还没出个问题!

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧