永发信息网

VB 中查找特定的字符问题,别说用InStr ,不适用我的问题。

答案:6  悬赏:30  手机版
解决时间 2021-11-10 17:16
VB 中查找特定的字符问题,别说用InStr ,不适用我的问题。
最佳答案
可以用do与instr,但用法要变
temp="A91FB2E71D38E1C0080C00"
a=1
do
a=instr(a,temp,"00")
if a mod 2<>0 then
msgbox a
exit do
end if
loop
我的思路是,若找到00起始位置 可被2整除,则跳过,否则输出
全部回答
如果十六进制字串中没有空格,可以建个循环
若返回的位置能被2整除,就从这个位置上继续往后查找
由于 InStr 返回的位置是从1开始计数,所以有效的位置应该在奇数位置上
加个判定不就行了吗?返回值是偶数肯定不是你要找的,返回值是奇数的才是你要找的。

如果是四位的十六进制,那就是说返回值必须是4*k+1形式才是你要找的。

由此推理,如果模式串是n位的,返回值nk+1才是你要找的。

不符合判定就继续找
Dim s, s1 As String
Dim i As Integer

s = "A91FB2E71D38E1C0080C00"
For i = 1 To Len(s) Step 2
s1 = Mid(s, i * 2 - 1, 2)
If s1 = "00" Then
Print "00位于第" & i * 2 - 1
Exit For
End If
Next
建议你生成串的时候加分隔符,这点很难吗?否则没有更好的方法
'用递归
'j=GetIndex("A91FB2E71D38E1C0080C00", "00", Len("A91FB2E71D38E1C0080C00"))

Private Function GetIndex(sSource As String, sFind As String, iLong As Integer) As Integer
Dim i As Integer
i = InStr(sSource, sFind)
If i <= 0 Then
GetIndex = Len(sSource) - iLong
Else
If i Mod 2 = 0 Then
GetIndex = i + GetIndex(Mid(sSource, i + 1), sFind, iLong)
Else
GetIndex = i
End If
End If
End Function
很简单啊,转换为数字再来找:
Private Sub Command1_Click()
a = "A91FB2E71D38E1C0080C00"
For i = 1 To Len(a) Step 2
If Val("&h" & Mid(a, i, 2)) = 0 Then Print i
Next
End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何高质量的使用朋友圈
求嘘我要尿尿txt谢谢
桓台县工商行政管理局荆家工商所地址有知道的
木工支挑梁怎么支
一个人如果去酒吧该怎么玩?
昨天中午的肉馅子今天早上抄了,现在还能吃吗
夏天储存大米抽了真空变质吗?
最新泰唔士报大学排名
熊猫tv的直播助手能在别的平台用吗
麦吉丽的护肤品擦在脸上会不会出现油油的现象
怎么样写表扬信,表扬一个人出差在外9个月
我国城市规划的阶段如何划分各层次基本内容
vivox6指纹解锁不好用
匀变速直线运动公式 V^2-Vo^2=2ax 怎么推导
cats音乐剧 最著名的是什么
推荐资讯
汽车停10天左右电瓶没有电了正常吗
小米4和小米c那个好
从左家垅西到砂子塘怎么坐公交车,最快需要多
高层基础8种土质开挖坡度系数表
左边目右边隹是什么字个字怎么读
#阿基米米科技(北京)有限公司#主要负责哪些方
木栖河信用社地址好找么,我有些事要过去,
职工给领导培训怎么开场
电动车充电器在没有加负载情况下电压是高还是
哪里可以学到重庆馋香鸭
求助!!quikdo激活码 如题quickdo激活码 iD
过来人告诉你,为什么生完孩子后再麻烦也不要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?