主题:请问VB在文件中搜索字符串问题
zcxlhx
[专家分:720] 发布于 2010-01-05 21:57:00
请问怎么在VB中实现在二进制文件中搜索字符串?返回的是字符串在文件中的首次出现的位置.就是返回值要和用Ultraedit查出来的位置一样,试了好几种办法都不行.主要是返回值的问题,因为instr函数返回的值有时候汉字(二字节)只算一个字节,要怎么处理这种情况?用instrB也不行.
回复列表 (共4个回复)
沙发
一江秋水 [专家分:9680] 发布于 2010-01-06 09:51:00
我提供一种办法:
直接就用读入字符的方法把文件内容读入到一个字符型变量中,用instr函数查找,再用left函数取得从文首至查找处的字串,最后用API函数lstrlen获取这个字串的字节数,这个字节数也就是你所需要的“位置”
板凳
QB71 [专家分:1300] 发布于 2010-02-20 01:53:00
把要找的字符串转换成字节,也就是byte
然后读文件也是按字节读,要找的跟文件对比
Ultraedit也应该是这样做的,这样不用理会内容是什么
3 楼
wwc7654321 [专家分:1590] 发布于 2010-02-22 16:56:00
instrB也不行?
[quote]
InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。[/quote]
4 楼
wwc7654321 [专家分:1590] 发布于 2010-02-22 16:56:00
明白了,试试
MsgBox InStrB(1, "11bb你我a", "a")
MsgBox InStr(1, "11bb你我a", "a") * 2 - 1
MsgBox InStrB(1, StrConv("11bb你我a", vbFromUnicode), StrConv("a", vbFromUnicode)) & "(你要的)"
我来回复