搜索 returns 行号
Search returns line number
我正在尝试在文本文件中搜索内容并返回行号。
我尝试使用 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
%>
总之,这不行,所以问题是:
有什么方法可以在搜索文本文件时返回行号。
您需要让循环包含 readline
,以便它获取下一行,否则它会进入无限循环,这就是它超时的原因,而不是因为您正在使用 InStr
你也只触发一次 InStr
,在循环之前,所以它只会在第一行找到它。同样,这需要在循环内。
我还对其进行了更改,以便它可以找到多次出现的情况,如果您不想这样,则必须向 Do While
添加另一个条件我还向response,否则抵消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
我正在尝试在文本文件中搜索内容并返回行号。
我尝试使用 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
%>
总之,这不行,所以问题是:
有什么方法可以在搜索文本文件时返回行号。
您需要让循环包含 readline
,以便它获取下一行,否则它会进入无限循环,这就是它超时的原因,而不是因为您正在使用 InStr
你也只触发一次 InStr
,在循环之前,所以它只会在第一行找到它。同样,这需要在循环内。
我还对其进行了更改,以便它可以找到多次出现的情况,如果您不想这样,则必须向 Do While
添加另一个条件我还向response,否则抵消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