字符串a中的字段有一下3种形式的分隔:
(1)*****空格(N个)*****空格(N个))*****空格(N个)......
(2)*****tab*****tab*****tab......
(3)*****,*****,*****,......要求判断字符串中的字段是以什么字符间隔的,若是以空格间隔,还需要判断是几个空格一组来间隔的。请指教,谢谢!

解决方案 »

  1.   

    间隔标准吗?判断长度应该可以用len
      

  2.   


    Option ExplicitPrivate Sub Command1_Click()
        Dim strP As strting
        Dim intP As String
        strP = "*****  *****  *****"
        intP = InStr(1, strP, " ", vbTextCompare)
        If intP <> 0 Then Debug.Print "间隔是空格"
        intP = InStr(1, strP, ",", vbTextCompare)
        If intP <> 0 Then Debug.Print "间隔是逗号"
        intP = InStr(1, strP, vbTab, vbTextCompare)
        If intP <> 0 Then Debug.Print "间隔是制表符"
    End Sub
      

  3.   

    本帖最后由 bcrun 于 2012-07-20 10:15:46 编辑
      

  4.   

    固定多个空格分隔时,确定空格个数:Dim n As Integer, p1 As Long, p2 As Longp2 = InStr(1, a, Space(1))
    If p2 Then 
      Do 
        n = n + 1
        p1 = p2
        p2 = Instr(p1, a, Space(1))
      Loop While p2 = p1 + 1
    End If
      

  5.   

    奇怪的很,p2 = Instr(p1, a, Space(1)) p1没起作用,每次都是从第一个字符开始计数的。刚试了一下,p2 = InStr(3, "abcf,defg", ",")  p2=5 
               p2 = InStr(1, "abcf,defg", ",")  p2=5InStr([start, ]string1, string2[, compare])  start咋不起作用呢?
      

  6.   

    怎么不起作用了?返回的是string2从start开始第一次出现在string1的位置,从第3位开始查找,第一次出现","是在第5个字符上,从第1位开始查找,","是也在第5个字符上第一次出现
      

  7.   

    是有 Bug:  Do 
        n = n + 1
        p1 = p2 + 1
        p2 = Instr(p1, a, Space(1))
      Loop While p2 = p1 + 1否则会找到同一个匹配。
      

  8.   

    返回的是string1中所在的位置,不是start开始计数,start开始查找是指忽略start前的字符。
      

  9.   

    找到一个好办法,不过效率很低。
    Dim i%
    Const s = "123    444    5655"
    Do While Replace(s, Space(i + 1), "") <> s
        i = i + 1
    Loop
    MsgBox i'这个i就是你要的空格数,会显示4
      

  10.   

    再上一个更短的代码,可直接运行:
    With CreateObject("vbscript.regExp")
        .Pattern = "\s+"
        MsgBox "空格长度是:" & Len(.Execute("123    444    5655")(0).Value)
    End With
      

  11.   

    试问楼主
    字符串“A空格Tab,B空格Tab,C”
    是用什么字符间隔的?
    (^_^)