VB 中查找特定的字符问题,别说用InStr ,不适用我的问题。
答案:6 悬赏:30 手机版
解决时间 2021-11-10 17:16
- 提问者网友:書生途
- 2021-11-10 11:49
VB 中查找特定的字符问题,别说用InStr ,不适用我的问题。
最佳答案
- 五星知识达人网友:忘川信使
- 2021-11-10 12:43
可以用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整除,则跳过,否则输出
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整除,则跳过,否则输出
全部回答
- 1楼网友:玩世
- 2021-11-10 18:04
如果十六进制字串中没有空格,可以建个循环
若返回的位置能被2整除,就从这个位置上继续往后查找
由于 InStr 返回的位置是从1开始计数,所以有效的位置应该在奇数位置上
若返回的位置能被2整除,就从这个位置上继续往后查找
由于 InStr 返回的位置是从1开始计数,所以有效的位置应该在奇数位置上
- 2楼网友:往事隔山水
- 2021-11-10 16:53
加个判定不就行了吗?返回值是偶数肯定不是你要找的,返回值是奇数的才是你要找的。
如果是四位的十六进制,那就是说返回值必须是4*k+1形式才是你要找的。
由此推理,如果模式串是n位的,返回值nk+1才是你要找的。
不符合判定就继续找
如果是四位的十六进制,那就是说返回值必须是4*k+1形式才是你要找的。
由此推理,如果模式串是n位的,返回值nk+1才是你要找的。
不符合判定就继续找
- 3楼网友:骨子里都是戏
- 2021-11-10 16:06
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
建议你生成串的时候加分隔符,这点很难吗?否则没有更好的方法
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
建议你生成串的时候加分隔符,这点很难吗?否则没有更好的方法
- 4楼网友:煞尾
- 2021-11-10 15:02
'用递归
'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
'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
- 5楼网友:骨子里都是戏
- 2021-11-10 13:29
很简单啊,转换为数字再来找:
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
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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯