怎样用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高手指导小弟,拜谢~~~可以用的话加双倍分~~~
展开
 我来答
lnzzxzy
2012-06-20 · TA获得超过8126个赞
知道小有建树答主
回答量:1316
采纳率:80%
帮助的人:751万
展开全部
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
一个包子的故事
2012-06-20 · 超过23用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:51.2万
展开全部
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
追问
谢谢啊  可以帮我把读取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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吹花PM
2012-06-20 · TA获得超过946个赞
知道小有建树答主
回答量:635
采纳率:0%
帮助的人:603万
展开全部
'通用过程
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中,再调用。
方便,直观
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式