求助:如何查找字符串中某字符的所有位置

qq_34451232 2016-04-04 07:26:53
在下对计算机编程有些兴趣,听说VB语言比较简单,所以现在在自学VB语言,但苦于之前没有任何编程基础,所以问题多多,还请各位指教。这里再请教一个问题。
用instr函数可以查找某字符所在的第一个位置,如在字符串“abcdabcda”中查找“a”,代码如下

Private Sub Command1_Click()
pos = InStr("abcdabcda", "a")
Print pos
End Sub

运行显示结果为1,可在字符串“abcdabcda”中一共有3个a,位置分别是1,5,9。我该如何写代码能够把所有的位置都查出来呢?我百度了一下也没找到答案。
...全文
419 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHRXJR 2016-04-05
  • 打赏
  • 举报
回复

这个程序可以随便检测一个字符串中包含需要检测字符的所有位置,代码如下:
Private Sub Command1_Click()
Dim AA As String, BB As String, NN As Integer, SS() As Integer, SS1() As Integer, KK As Integer
AA = Text1.Text
BB = Text2.Text
Text3.Text = ""
NN = Len(AA)
ReDim SS(0 To NN), SS1(1 To NN)
Text3.Text = BB & " 的位置有:" & vbCrLf
For I = 1 To NN
SS(I) = InStr(I, AA, BB)
If I = 1 Then
KK = KK + 1
SS1(KK) = SS(I)
ElseIf I > 1 And SS(I - 1) < SS(I) Then
KK = KK + 1
SS1(KK) = SS(I)
End If
Next I
For I = 1 To KK
If I = KK Then
Text3.Text = Text3.Text & SS1(I)
Else
Text3.Text = Text3.Text & SS1(I) & ", "
End If
Next I
End Sub

代码特别简单,需要时仅仅提取SS1数组即可,SS1数组的有效下标是1 到 KK。
qq_34451232 2016-04-05
  • 打赏
  • 举报
回复
多谢以上三位,我试了一下,一楼二楼的都可以,三楼的没结果,我把三楼代码中的Debug.Print改成print就好了。 但是在下是初学者,一楼的根本没看懂,二楼的能看懂一点。三楼的最简单易懂。
of123 2016-04-05
  • 打赏
  • 举报
回复
要利用循环多次调用 InStr() 函数,从第二次起,要设置起始查找点为上一次找到位置之后。 Private Sub Command1_Click() Dim strSource As String, p As Integer strSource = "abcdabcda" For p = 1 To Len(strSource) p = InStr(p, strSource, "a") If p > 0 Then Debug.Print p Next p End Sub 1 5 9
笨狗先飞 2016-04-04
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim I As Integer, pos() As Long
pos = InStrEx("abcdabcda", "a")
For I = 0 To UBound(pos)
Print pos(I)
Next
End Sub

Public Function InStrEx(ByVal String1 As String, ByVal String2 As String) As Long()
Dim I As Long, Result() As Long
ReDim Result(0)
I = InStr(String1, String2)
Result(0) = I
Do Until I = 0
I = InStr(I + 1, String1, String2)
If I > 0 Then
ReDim Preserve Result(UBound(Result) + 1)
Result(UBound(Result)) = I
End If
Loop
InStrEx = Result
End Function

7,785

社区成员

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

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