vba 判断某种类型的字符串,如数字+字母+数字的字符串?

如判断2T1、5K13、14S3之类的字符串?
譬如txt文件里某一行是< x="1" y="1" a="1S5" b="2X8" s y x a b 11 >,存储在字符串str中
怎么提取出其中的1S5、2X8之类的

你试试这个:

Dim CurrChr As Integer '1--数字,2--字母,3--其他
Dim ReadChr As Boolean

Dim L As Integer
Dim i As Integer
Dim sstr As String
Dim Newstr As String

sstr = "< x=""1"" y=""1"" a=""1S5"" b=""2X8"" 234xyd123 s y x a b 11 >"
Print "原字符串:"; sstr
Print
Print "找到的特殊字符串:"

L = Len(sstr)
Newstr = ""
CurrChr = 3
For i = 1 To L
Select Case Asc(Mid(sstr, i, 1))
Case 48 To 57
'读到数字
Select Case CurrChr
Case 1, 2 '如果前面读到是数字或字母
CurrChr = 1
Newstr = Newstr & Mid(sstr, i, 1)
Case 3 '如果前面读到是其他
CurrChr = 1
Newstr = Mid(sstr, i, 1)
End Select
Case 65 To 90, 97 To 122
'读到字母
Select Case CurrChr
Case 1, 2 '如果前面读到是数字或字母
CurrChr = 2
Newstr = Newstr & Mid(sstr, i, 1)
ReadChr = True
Case 3 '如果前面读到是其他
CurrChr = 3
Newstr = ""
End Select
Case Else
'读到其他
If CurrChr = 1 And ReadChr Then Print Newstr
Newstr = ""
CurrChr = 3
ReadChr = False
End Select
Next i

已经通过VB6测试!追问

谢谢,虽然提取出的是234xyd123这类,而不是a="2s1"中的2s1这类。但是只要改改就ok了。万分感谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-10
for i=1 to len(str)-3
s=mid(str,i,3)
if s Like "#?#" then '满足这个条件的S就是你要提取的字符串,放在哪里?

next
第2个回答  2014-09-10
建议使用正则表达式
你可以在网上搜索一下相关的文章
功能很强大
但使用较复杂
几句话说不清楚追问

正在搜,还没读懂

追答

呵呵
也不难

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网