03. juni 2004 - 00:47Der er
13 kommentarer og 1 løsning
Søge i tekstfil
Hvad er den simpleste måde at gribe det her an, jeg har en tekstfil, hvor jeg skal finde noget bestemt.. men jeg ved ikke hvad det er..(Et random tal nemlig) men jeg ved det kommer tre linier før det ord jeg ved.. Hvad er den nemmeste måde... ville det være at smide hver linie ind i et array og samtidig med at jeg kigger efter mit ord.. og når det er fundet går jeg bare 2-3 (an på hvor når du sætter linien i arrayet) tilbage i arrayet og skriver det ud... eller er der en smartere løsning
ville umiddelbart bruge en forløkke hvor du så tester hver enkelt linie for om den indeholder det random tal.. Gør den det, så ville jeg tælle 3 op, og så vælge den linie så får du den linie ud som du ønsker.
Dette lille eksempel åbner filen tekststreng.txt og kigger efter ordet "ord" i den 3. linie.
<% i = 0 const forreading = 1 filepath = server.MapPath("tekststreng.txt") Set objFSO = server.CreateObject("Scripting.FileSystemObject") set file = objFSO.GetFile(Filepath) Set objTekst = file.OpenAsTextStream(forreading) for i = 1 to 3 strLinie = objtekst.readline next streng = strlinie Sord = "ord" MyPos = InstrRev(streng, Sord) if MyPos <> "0" then response.Write("Ordet findes") else response.Write("Ordet findes ikke") end if %>
<% Sord = "ord" const forreading = 1 filepath = server.MapPath("tekststreng.txt") Set objFSO = server.CreateObject("Scripting.FileSystemObject") set file = objFSO.GetFile(Filepath) Set objTekst = file.OpenAsTextStream(forreading) i = 0 while not objTekst.atEndOfStream and i <= 3 then if i = 0 then strLinie = objtekst.readline MyPos = Instr(streng, Sord) if MyPos > 0 then i = i+1 end if else strLine = objTekst.readLine i = i+1 end if next streng = strlinie %>
Sådan her..
Så læser du igennem filen indtil du finder ordet du søger efter Sord. Når du har fundet det, så tæller filen 3 linier frem og gemmer linien i variablen streng.
<% i = 0 const forreading = 1 filepath = server.MapPath("tekststreng.txt") Set objFSO = server.CreateObject("Scripting.FileSystemObject") set file = objFSO.GetFile(Filepath) Set objTekst = file.OpenAsTextStream(forreading) Dim strlinie(15) i = 0 while not objTekst.atEndOfStream i = i + 1 strLinie(i) = objtekst.readline Sord = " ord " MyPos = InstrRev(strlinie(i), Sord) if MyPos <> "0" then response.Write(strlinie(i-3)) end if wend %>
Det er der ikke rigtig nogen årsag til :o) Jeg pastede fra et tidligere script, hvor jeg skulle have placeringen af en streng fra slutningen at en anden streng ;)
hmm... hvis forekomsten kun kommer en gang.. Ville da forestille mig at dette ville virke så:
<% i = 0 dim strEt, strTo, strTre const forreading = 1 filepath = server.MapPath("tekststreng.txt") Set objFSO = server.CreateObject("Scripting.FileSystemObject") set file = objFSO.GetFile(Filepath) Set objTekst = file.OpenAsTextStream(forreading)
while not objTekst.atEndOfStream and i = 0 strTre = strTo strTo = strEt strEt = objtekst.readline Sord = " ord " MyPos = Instr(strEt, Sord) if MyPos <> "0" then response.Write(strTre) i = i+1 end if wend %>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.