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
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-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