有一组字符串,每8个字母和数字为一组,中间用逗号,横线,或者空格等非字母和数字连接,例如:
abc1234,dsss12cm,1223dddd AAAA1111 需要将每组字符串的最后一位提取出来,得到用逗号分割的新的字符串,(上面这些字符提取后应该是“4,m,d,1"),应该怎样做啊?可以用正则表达式吗?
abc1234,dsss12cm,1223dddd AAAA1111 需要将每组字符串的最后一位提取出来,得到用逗号分割的新的字符串,(上面这些字符提取后应该是“4,m,d,1"),应该怎样做啊?可以用正则表达式吗?
如果每一组长度都一样的话,变化mid的第二个参数就行了
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"),
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”
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