2015-06-21 110 views
0

我試圖搜索文本文件中的內容並返回行號。
我試圖通過使用instr獲取行號,但是超時了腳本。搜索返回行號

<% 
Const ForReading = 1 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("evewhdb.txt"), 1) 

FSOContents = objTextFile.readline 
SResult = InStr(1,FSOContents,"A123456",1) 

If Sresult <>0 Then 
    Response.Write "line is: " & objTextFile.Line 

Else 
    Do While Not objTextFile.AtEndOfStream 
    Loop 
End If 

Set objFSO = nothing 
Set objTextFile = nothing 
%> 

無論如何,這是不行的,所以問題是:
有什麼辦法有行號上搜索一個文本返回。

回答

3

您必須循環含有readline,使其讀取下一行,否則它會進入一個無限循環,這就是爲什麼它超時,不是因爲你正在使用InStr

也在循環之前只發一次InStr,所以只有在第一行時纔會發現它。再次,這需要在循環內。

此外,我已經改變它,以便它會找到多個事件,如果你不想那麼你必須添加另一個條件到Do While我也加了-1到響應,否則它是偏移一個。

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("evewhdb.txt"), 1) 

FSOContents = objTextFile.readline 
Do While Not objTextFile.AtEndOfStream 
    SResult = InStr(1,FSOContents,"A123456",1) 
    If Sresult <>0 Then 
     Response.Write "line is: " & objTextFile.Line - 1 & "<BR>" 
    End If 
    FSOContents = objTextFile.readline 
Loop 

Set objFSO = nothing 
Set objTextFile = nothing