VB 截取字符串

803>answer8808 我要截取8808 截取字母后面的数字
比如7890tony65438 截取的就是65438

利用正则实现,假设你上面的文本放在text1 中

Private Sub Command1_Click()

    Dim regex As Object, matches As Object, match  As Object

    Dim i     As Integer

    

Set regex = CreateObject("vbscript.regexp")

    With regex

        .ignorecase = True

   .Pattern = "[a-z]+?(\d+)"

  这里少一行代码,在图片上。

        Set matches = .execute(Text1.Text)

For i = 0 To matches.Count - 1

                 Set match = matches(i)

            Debug.Print match.submatches(0) '在立即窗口中,显示截取到的数字

        Next i

            End With

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-25
给你编了一个函数
Function RightShuZi(str) As String
Dim i
Dim L '记录原字符串的长度
Dim n '记录右边数字的个数
Dim A '记录所截取字符的ASCII值
L = Len(str) '获得str的长度
For i = L To 1 Step -1
A = Asc(Mid(str, i, 1))
If A >= 48 And A <= 57 Then '数字的ASCII值在48到57之间
n = n + 1
Else
Exit For
End If
Next
RightShuZi = Right(str, n) '从右边截取
End Function

例如:
Private Sub Command1_Click()
Dim ss
Dim mm
ss = "7890tony65438"
mm = RightShuZi(ss)
Print mm
End Sub
单击Command1后窗体就会打印65438
第2个回答  2010-05-25
'弄了个函数JQSZ(),方便你调用
Option Explicit
Private Function JQSZ(a As String) As String
If a <> "" Then
Dim k As Integer
Do Until k = Len(a)
k = k + 1
If Right(a, k) <> CStr(Val(Right(a, k))) And Mid(a, Len(a) - k + 1, 1) <> "0" Then Exit Do
'判断第k个字符是否位数字,若不是则退出循环,此时k为倒数第一个不是数字的字符位置
Loop
If k = Len(a) Then
JQSZ = Right(a, k)
Else
JQSZ = Right(a, k - 1)
End If
End If
End Function

Private Sub Command1_Click()
Dim a As String '不要忘记定义类行
a = Text1
Text2 = JQSZ(a) '其他地方这样用就行了
End Sub
第3个回答  2010-05-25
很简单:
Right(a, i) '多末端取出字符串用right( a,i),其中a表示字符串,i表示取出的字符数
比如你举的例子:
'1、
Print Right("7890tony65438", 4)
'2、
a = "answer8808"
Print Right(a, 4)
第4个回答  2010-05-25
方法很多,MsgBox StrReverse(Val(StrReverse("7890tony65438"))) 最经典。

Private Sub Form_Load()
Dim str1 As String, str2 As String
Dim i As Integer, k As Integer
str1 = "803>answer8808"
str2 = ""
For i = Len(Trim(str1)) To 1 Step -1
If Asc(Mid(str1, i, 1)) >= 97 And Asc(Mid(str1, i, 1)) <= 122 Then
k = Len(Trim(str1)) - i
str2 = Mid(str1, i + 1, k)
Exit For
End If
Next i
MsgBox str2
End Sub
相似回答
大家正在搜