怎样用VB读取一个TXT文件里的特定字符间的内容?
比如,我有一个叫name的TXT文件里面的内容是:ABC(aa)abc+AB(bb)AB=A=B=CD(cc)AB现在,我想把括号()里面的东西读取出来,并放进一个TAB...
比如,我有一个叫name的TXT文件
里面的内容是:
ABC(aa)abc
+AB(bb)AB
=A=B=CD(cc)AB
现在,我想把括号( )里面的东西读取出来,并放进一个TAB里面,比如这个文件读取后,我可以得到一个TAB,并且TAB(0)=aa 然后TAB(1)=bb , TAB(2)=cc
请各位VB高手指导小弟,拜谢~~~可以用的话加双倍分~~~ 展开
里面的内容是:
ABC(aa)abc
+AB(bb)AB
=A=B=CD(cc)AB
现在,我想把括号( )里面的东西读取出来,并放进一个TAB里面,比如这个文件读取后,我可以得到一个TAB,并且TAB(0)=aa 然后TAB(1)=bb , TAB(2)=cc
请各位VB高手指导小弟,拜谢~~~可以用的话加双倍分~~~ 展开
3个回答
展开全部
Function GetIn$(ByVal S$, ByVal S1$, ByVal S2$) '算定义 取特征字符串
Dim p1%, p2%: GetIn = "": p1 = InStr(S, S1)
If p1 > 0 Then
S = Mid(S, p1 + Len(S1)): p2 = InStr(S, S2)
If p2 > 0 Then S = Left(S, p2 - 1): GetIn = S
End If
End Function
Private Sub Command1_Click()
Dim f%, temp$, S$, A
f = FreeFile
Open App.Path & "\name.TXT" For Input As f
While Not EOF(f)
Line Input #f, temp '读文件中的 一行
S = S & GetIn(temp, "(", ")") & "|" '调用 GetIn 函数 取出每一行中的()中的内容
Wend
Close f
A = Split(S, "|") '将S用 | 分解为数组
For f = LBound(A) To UBound(A)
Print A(f) '输出A数组
Next
End Sub
Dim p1%, p2%: GetIn = "": p1 = InStr(S, S1)
If p1 > 0 Then
S = Mid(S, p1 + Len(S1)): p2 = InStr(S, S2)
If p2 > 0 Then S = Left(S, p2 - 1): GetIn = S
End If
End Function
Private Sub Command1_Click()
Dim f%, temp$, S$, A
f = FreeFile
Open App.Path & "\name.TXT" For Input As f
While Not EOF(f)
Line Input #f, temp '读文件中的 一行
S = S & GetIn(temp, "(", ")") & "|" '调用 GetIn 函数 取出每一行中的()中的内容
Wend
Close f
A = Split(S, "|") '将S用 | 分解为数组
For f = LBound(A) To UBound(A)
Print A(f) '输出A数组
Next
End Sub
展开全部
Dim a(100) As String
x = "ABC(aa)abc_+AB(bb)AB=A=B=CD(cc)AB"
y = "("
z = ")"
p1 = 1
j = 0
For i = 0 To Len(x)
p1 = InStr(p1, x, y)
If p1 = 0 Then
Exit For
End If
p2 = InStr(p1, x, z)
a(j) = Mid(x, p1 + 1, p2 - p1 - 1)
j = j + 1
i = p2
p1 = p2
Next
随意写的 a(0)=aa a(1)=bb a(2)=cc
x = "ABC(aa)abc_+AB(bb)AB=A=B=CD(cc)AB"
y = "("
z = ")"
p1 = 1
j = 0
For i = 0 To Len(x)
p1 = InStr(p1, x, y)
If p1 = 0 Then
Exit For
End If
p2 = InStr(p1, x, z)
a(j) = Mid(x, p1 + 1, p2 - p1 - 1)
j = j + 1
i = p2
p1 = p2
Next
随意写的 a(0)=aa a(1)=bb a(2)=cc
追问
谢谢啊 可以帮我把读取TXT文件的那部分代码也写出来么?
可以运行的话 我再加给您20分
追答
Open App.Path&"\name.txt" For Input As #1
Dim Lines As String
Dim NextLine As String
Dim i As Integer
Do While Not EOF(1)
On Error Resume Next
Line Input #1, NextLine
Lines = Lines & NextLine & Chr(13) & Chr(10)
Loop
Close #1
x=Lines
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'通用过程
Sub pp(ByRef a() As String, ByVal st As String) '匹配
Dim m As Long, n As Long
For i = 1 To Len(st)
If Mid(st, i, 1) = "(" Then m = i
If Mid(st, i, 1) = ")" Then
n = i
If m <> 0 And n <> 0 Then
ReDim Preserve a(UBound(a) + 1)
a(UBound(a)) = Mid(st, m + 1, n - m - 1)
m = 0: n = 0
End If
End If
Next i
End Sub
用的时候保证已定义了全局数组,且该数组为动态的,并进行初始化首元素为空,调用后提取的信息从数组下标为1的元素开始。
’这个算法匹配的是相邻两个完整的括号,如对于“(1)2(8(3)4(5)6)9)0(7))”,它提取的是1,3,5,7
如果希望其他匹配方式,算法需要改动,当然如果你的文本都是()这样的有规律,就没有必要考虑那么多。
用的时候可以这样调用
Open App.Path & "\ceshi.txt" For Input As #110
Do While Not EOF(110)
Line Input #110, s
Call pp(b(), s)'b()是已定义的全局动态数组
Loop
Close #110
这种调用默认忽略了每行的未匹配半括号,如剩下一个“(”,那么不和下一行的“)”,行与行之间独立。
如果想都匹配,可以把文本全读到变量s中,再调用。
方便,直观
Sub pp(ByRef a() As String, ByVal st As String) '匹配
Dim m As Long, n As Long
For i = 1 To Len(st)
If Mid(st, i, 1) = "(" Then m = i
If Mid(st, i, 1) = ")" Then
n = i
If m <> 0 And n <> 0 Then
ReDim Preserve a(UBound(a) + 1)
a(UBound(a)) = Mid(st, m + 1, n - m - 1)
m = 0: n = 0
End If
End If
Next i
End Sub
用的时候保证已定义了全局数组,且该数组为动态的,并进行初始化首元素为空,调用后提取的信息从数组下标为1的元素开始。
’这个算法匹配的是相邻两个完整的括号,如对于“(1)2(8(3)4(5)6)9)0(7))”,它提取的是1,3,5,7
如果希望其他匹配方式,算法需要改动,当然如果你的文本都是()这样的有规律,就没有必要考虑那么多。
用的时候可以这样调用
Open App.Path & "\ceshi.txt" For Input As #110
Do While Not EOF(110)
Line Input #110, s
Call pp(b(), s)'b()是已定义的全局动态数组
Loop
Close #110
这种调用默认忽略了每行的未匹配半括号,如剩下一个“(”,那么不和下一行的“)”,行与行之间独立。
如果想都匹配,可以把文本全读到变量s中,再调用。
方便,直观
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询