vb删除txt中的多余的文本

zouhongjieisgreate 2013-06-20 09:38:25
文本内容如下所示:
INPUT 11
NAME "" LABEL 0.00 0.00
LINK 17 Q 545.000 COMPOSITION 1
TIME FROM 600.0 UNTIL 1200.0

INPUT 12
NAME "" LABEL 0.00 0.00
LINK 18 Q 352.000 COMPOSITION 2
TIME FROM 600.0 UNTIL 1200.0

INPUT
NAME "" LABEL 0.00 0.00
LINK Q COMPOSITION
TIME FROM UNTIL

INPUT
NAME "" LABEL 0.00 0.00
LINK Q COMPOSITION
TIME FROM UNTIL

INPUT
NAME "" LABEL 0.00 0.00
LINK Q COMPOSITION
TIME FROM UNTIL

想把INPUT 12
NAME "" LABEL 0.00 0.00
LINK 18 Q 352.000 COMPOSITION 2
TIME FROM 600.0 UNTIL 1200.0
该段之后的3段,INPUT
NAME "" LABEL 0.00 0.00
LINK Q COMPOSITION
TIME FROM UNTIL
删除,请指点给出代码,万分感谢,,!
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zouhongjieisgreate 2013-06-21
  • 打赏
  • 举报
回复
引用 3 楼 of123 的回复:
你没有说清楚你的判据是什么。 假定你是根据 "Link 18" 来判断的(如果不是,改换代码中的 strPatern 即可):
Option Explicit
Const strPatern As String = "LINK 18"
Const strBlockHeader As String = "INPUT"

Private Sub Command1_Click()
Dim strLine As String, strTemp As String

Open "c:\test\a.txt" For Input As #1
Open "c:\test\temp.txt" For Output As #2
Do Until EOF(1)
    Line Input #1, strLine
    
    If Left(Trim(strLine), Len(strPatern)) = strPatern Then
        Do While Left(Trim(strLine), Len(strBlockHeader)) <> strBlockHeader
            Print #2, strLine
            Line Input #1, strLine
        Loop
        
        GoTo ExitSub
    End If
    
    Print #2, strLine
Loop

ExitSub:
Close #2
Close #1

Kill "c:\test\a.txt"
Name "c:\test\temp.txt" As "c:\test\a.txt"
End Sub
只是想从第一个没有编号的INPUT开始,将后面的所有行都删除,判断依据应该是:是否存在该编号的INPUT。能再帮下忙吗真的十分感谢,我是新手
zouhongjieisgreate 2013-06-21
  • 打赏
  • 举报
回复
引用 3 楼 of123 的回复:
你没有说清楚你的判据是什么。 假定你是根据 "Link 18" 来判断的(如果不是,改换代码中的 strPatern 即可):
Option Explicit
Const strPatern As String = "LINK 18"
Const strBlockHeader As String = "INPUT"

Private Sub Command1_Click()
Dim strLine As String, strTemp As String

Open "c:\test\a.txt" For Input As #1
Open "c:\test\temp.txt" For Output As #2
Do Until EOF(1)
    Line Input #1, strLine
    
    If Left(Trim(strLine), Len(strPatern)) = strPatern Then
        Do While Left(Trim(strLine), Len(strBlockHeader)) <> strBlockHeader
            Print #2, strLine
            Line Input #1, strLine
        Loop
        
        GoTo ExitSub
    End If
    
    Print #2, strLine
Loop

ExitSub:
Close #2
Close #1

Kill "c:\test\a.txt"
Name "c:\test\temp.txt" As "c:\test\a.txt"
End Sub
你好,十分感谢,我知道是自己表达的不够清楚。。。我是想把INPUT 12之后的内容全部删除的
of123 2013-06-21
  • 打赏
  • 举报
回复
哦,代码中的 strTemp 并没有用到。原来是为更复杂的情况预备的。
of123 2013-06-21
  • 打赏
  • 举报
回复
你没有说清楚你的判据是什么。 假定你是根据 "Link 18" 来判断的(如果不是,改换代码中的 strPatern 即可):
Option Explicit
Const strPatern As String = "LINK 18"
Const strBlockHeader As String = "INPUT"

Private Sub Command1_Click()
Dim strLine As String, strTemp As String

Open "c:\test\a.txt" For Input As #1
Open "c:\test\temp.txt" For Output As #2
Do Until EOF(1)
    Line Input #1, strLine
    
    If Left(Trim(strLine), Len(strPatern)) = strPatern Then
        Do While Left(Trim(strLine), Len(strBlockHeader)) <> strBlockHeader
            Print #2, strLine
            Line Input #1, strLine
        Loop
        
        GoTo ExitSub
    End If
    
    Print #2, strLine
Loop

ExitSub:
Close #2
Close #1

Kill "c:\test\a.txt"
Name "c:\test\temp.txt" As "c:\test\a.txt"
End Sub
of123 2013-06-21
  • 打赏
  • 举报
回复
那就更容易了。
Option Explicit
Const strBlockHeader As String = "INPUT"

Private Sub Command1_Click()
Dim strLine As String, strTemp As String

Open "c:\test\a.txt" For Input As #1
Open "c:\test\temp.txt" For Output As #2
Do Until EOF(1)
    Line Input #1, strLine
    
    If Left(strLine, 5) = strBlockHeader And Trim(Mid(strLine, 6)) = "" Then
        GoTo ExitSub
    End If
    
    Print #2, strLine
Loop

ExitSub:
Close #2
Close #1

Kill "c:\test\a.txt"
Name "c:\test\temp.txt" As "c:\test\a.txt"
End Sub
threenewbee 2013-06-20
  • 打赏
  • 举报
回复
作为一个程序员,起码的素质不是研究如何写代码,而是能把你的需求归纳成精确的没有歧义的描述。 而不是胡乱给一些数据,然后随便说删除3条数据就“给点代码”。天知道你是要删除INPUT后面没有任何数字的,还是删除INPUT 12后面的 ,还是删除TIME FROM UNTIL后面没有东西的,还是删除最后的3条。 如果你连这基本的逻辑思维都没有,还是转行算了。
网络菜鸟00 2013-06-20
  • 打赏
  • 举报
回复
读进来,按行判断,某一行是"INPUT",且后面没有数字时,则退出。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧