Board logo

标题: [基础] 如何从 *.txt 文件中根据条件读出某一行? [打印本页]

作者: wshzw    时间: 2008-3-5 19:17     标题: 如何从 *.txt 文件中根据条件读出某一行?

请问:如何从 *.txt 文件中根据条件读出某一行?
如果从如下文件中读出以“德固赛3”开头的这一行,而该行的位置不是固定的,有时第5行,有时第2行或第6行……
单位      日期        其他
德固赛1 2008-3-5 ……0
德固赛4 2008-3-6 ……1
德固赛9 2008-3-7 ……2
德固赛6 2008-3-8 ……3
德固赛8 2008-3-9 ……4
德固赛3 2008-3-10 ……5
德固赛5 2008-3-11 ……6
德固赛2 2008-3-12 ……7
德固赛10 2008-3-13 ……8
德固赛7 2008-3-14 ……9

附件: 单位.rar (2008-3-5 19:17, 203 Bytes) / 该附件被下载次数 349
http://bbs.lihuasoft.net/attachment.php?aid=1372
作者: Nothing    时间: 2008-3-5 19:52

先从头到尾读文件,只到读出前四个字等于"德固赛3"
例如
do while not eof(1)
line input #1,str
if left(str,4)="德固赛3" then
exit do
end if
loop
作者: wshzw    时间: 2008-3-5 20:21

好,按你的指点很容易的就达到了要求,谢谢!
作者: wshzw    时间: 2008-3-14 19:43

1楼的问题在2楼已经解决。
如果1楼的问题再延伸一下:
如果从文件中能找到以“德固赛3”开头的这一行,就将这一行改写为以“G_德固赛3”开头;
如找不到以“德固赛3”开头的这一行,则将“德固赛3 ……”添加在末行。
谢谢!
作者: php    时间: 2008-3-15 10:00

加一个变量判断一下呗,如果找到,将这个变量付值为True,否则为Flase,然后将文件重新读写一遍就可以了。
作者: wshzw    时间: 2008-3-16 15:19

谢谢回复!
我将代码修改成如下,虽能达到要求,但觉得有点曲里拐弯的

   Open App.Path & "\Ket.txt" For Input As #1
   sIni() = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbLf)
   Close #1
   
   Do While i < UBound(sIni)
      If Split(sIni(i), ":")(0) = "德固赛3" Then
         sIni(i) = "德固赛3" & ":" & sKSub & ":" & sK & ":" & sKScale
         bFlag = True: Exit Do
      End If
      i = i + 1
   Loop
   
   If bFlag Then
      Open App.Path & "\Ket.txt" For Output As #1
      Print #1, Join(sIni, vbLf)
      Close #1      '重写Ket.txt
   Else
      Open App.Path & "\Ket.txt" For Append As #1
      Print #1, "德固赛3" & ":" & sKSub & ":" & sK & ":" & sKScale
      Close #1
   End If
作者: Nothing    时间: 2008-3-16 22:20

能达到目的就是好代码




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0