VB如何获取textbox指定的字符串,如果有规律的字符如何抓取

例如textbox中的代码是: a:"我",b:"爱",c:"你的",
获取我,爱,你 这3个字我知道代码是这样的:
Mid(Text1.Text, InStr(Text1.Text, "ini:") + N, n),主要这里的问题是,如何获取这3个双引号的位置,换句话,就说我要获取a,b,c这3个双引号里面的内容,不管这个内容有多长,如果像上面的代码是要看字符的长度。实现的目的就是获取这3个内容:
a:"到“我”字后面的"引号内的内容
b:"到“爱”字后面的"引号内的内容。如何实现?

Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])

返回在另一字符串中第一次出现某一字符串的位置

eg:  msgbox instr("a:"":我""",":")  结果为 2

Function InStrRev(StringCheck As String, StringMatch As String, [Start As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare]) As Long

返回在另一字符串中第一次出现某一字符串的位置 从后面查找

MsgBox InStrRev("a:"":我""", ":") 结果为 4

Function Join(SourceArray, [Delimiter]) As String

把数组转换成字符串  可查下

eg:  有数组  a()={"123","234","345"}'这里的语法在vb中不能用  vb.net 可以

join(a,"b")  结果为   123b234b345

Function Split(Expression As String, [Delimiter], [Limit As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare])

把字符串分成 数组  与Join 相反

eg:有字符串 “123b234b345”

dim a()

a=Split("123b234b345","b")

结果为: a()={"123","234","345"}


然后 就是你用过的 mid  left right replace  等等  其实上面的几个查找函数  基本 就能解决你的问题了

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-17
最简单的方法就是:
Dim s() As String
s = Split(Text1.Text, """")
Text2.Text = "a=" & s(1) & ", b=" & s(3) & ", c=" & s(5)本回答被提问者采纳
第2个回答  2013-01-17
用正则表达式吧,它处理这样的问题太在行了,用之前要先在工程中引入Microsoft VBScript Regular Expression,然后如下面的代码:
Private Sub Command1_Click()
Dim r As New RegExp
Dim matches As MatchCollection
Dim matchItem As Match
Dim matchText As String
dim s as string
s = " a:'我',b:'爱',c:'你的',"
r.IgnoreCase = True
r.Global = True
r.MultiLine = True
r.pattern = "'[^']+'"
Set matches = r.Execute(s)
matchText = ""
For Each matchItem In matches
matchText = matchItem.Value
msgbox matchtext
Next
Set r = Nothing
End Sub追问

不行啊,你的太专业了,我看不懂代码

第3个回答  2013-01-17
Private Sub Command1_Click()
Dim I As Long, J As Long, S As String
Do
J = InStr(I + 1, Text1.Text, """")
I = InStr(J + 1, Text1.Text, """")
If J <> 0 Then S = S & Mid(Text1.Text, J + 1, I - J - 1)
Loop Until J = 0
MsgBox S
End Sub追问

好厉害,就是这个

第4个回答  2013-01-17
Private Sub Command1_Click()
Dim s$
For i = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, i, 1)) < 0 Then s = s & Mid(Text1.Text, i, 1)
Next i
MsgBox s
End Sub追问

能给一下解说吗

追答

我这是直接取中文,后来一想你引号里要不是中文怎么办,就想来补充了,正好那你追问了,唉,玩了一天的游戏,一时也没好方法,要么你试试查找引号,查找方法是""",还要区分全角和半角...

追问

查找引号不行的,就像我的例子,a后面的引号和b后面的引号位置不同

追答

你要都是半角引号的话就好办了,试试用Split,然后取字符数组

追问

我说的例子能写个代码实现一下吗,2个文本控件,定义3个变量a,b,c,在text2输入:a=我,b=爱,c=你的 ,后面的值就是引号内的内容

追答

呵呵,书生的回答就是我说的,不给代码你是不采纳^_^