有一组字符串,每8个字母和数字为一组,中间用逗号,横线,或者空格等非字母和数字连接,例如:
abc1234,dsss12cm,1223dddd AAAA1111  需要将每组字符串的最后一位提取出来,得到用逗号分割的新的字符串,(上面这些字符提取后应该是“4,m,d,1"),应该怎样做啊?可以用正则表达式吗?

解决方案 »

  1.   

    用len得到字符串长度,mid(字符串,len-1,1)得到最后一个字符,再套一层循环处理所有字符串并连接
      

  2.   

    没注意看这些字符串是连在一起的,这是序列号或注册码之类的东东吧
    如果每一组长度都一样的话,变化mid的第二个参数就行了
      

  3.   

    dim tStr,aStr,bStr,cStr as string
    dim Strno%
    tStr="abc1234,dsss12cm,1223dddd AAAA1111.............."
    bStr=""
    for Strno%=0 to xx(字符串组数)
     aStr=mid(tStr,1+Strno%*8,8)
     if trim(aStr)="" then exit for  
     cStr=mid(aStr,7,1)
      if bStr="" then
      bStr= cStr
      else
      bStr= bStr & "," & cStr
      endif
     next Strno%****************************************
    bStr就是,(上面这些字符提取后应该是“4,m,d,1"),
      

  4.   

    每组数有8位字母和数字,中间隔的是什么东西,不知道?中间隔了几个,也不知道?这样办:用扫描的方式。dim str as string '类似aabc1234,dsss12cm 1223dddd..AAAA1111'''ffgfhjkl的字符串(不能超过256个)   
    dim s as string,Mystr as string
    dim i as integer
    str="aabc1234,dsss12cm 1223dddd..AAAA1111'''ffgfhjkl" ’判断是否为字母的函数
    Private Function IsLeter(c As String) As Boolean
        Dim asci As Byte
        IsLeter = False
        asci = Asc(c)
        If (asci >= Asc("A") And asci <= Asc("Z")) Or (asci >= Asc("a") And asci <= Asc("z")) Then 
            IsLeter=true
    End Function
    '将中间的所有数字和字母取出来形成新的字符串:Mystr=aabc1234dsss12cm1223ddddAAAA1111ffgfhjkl   
    for i=1 to len(str)
        s=mid(str,i,1)
        if IsNumeric(s) or IsLeter(s) then
           Mystr=Mystr & s
        endif
    next'然后按要求提取出来
    for i=8 to len(str) step 8
        s=mid(Mystr,i,1)&","   
    next'去掉S末尾的一个逗号
    Mystr=mid(s,1,len(s)-1)'最后结果是:“4,m,d,1,l”
      

  5.   

    谢谢chenjl1031 ,谢谢各位。
      

  6.   

    方法应该有许多,比如正则:Function StrReplace(s As String, p As String, r As String) As String
        Dim re As RegExp
        Set re = New RegExp
        re.IgnoreCase = True
        re.Global = True
        re.Pattern = p
        StrReplace = CStr(re.Replace(s, r))
    End FunctionPrivate Sub Command1_Click()    Dim p As String
        Dim s As String    s = "aabc1234,dsss12cm 1223dddd.AAAA1111 '''ffgfhjkl"
        p = "[A-Za-z0-9]{7}"
        s = StrReplace(s, p, "")
        p = "[^A-Za-z0-9]+"
        s = StrReplace(s, p, ",")
        Debug.Print s
        
    End Sub
      

  7.   

    引用“Microsoft   VBScript   Regular   Expressions   5.5”