M Maister Medlem sedan juli 2001 65 inlägg Trådstart 22 juli 2001 13:22 #1 Jag har lagrat innehållet i en hemsida i en string. Har använt InStr för att leta fram en sak i strängen. Mid för att läsa ut x antal tecken från positionen jag fick genom InStr. Det jag vill göra nu är att leta efter en viss text på nästa rad, men bara på den och inte i hela strängen. Hoppades att .readline skulle funka, men det gjorde det inte. Några förslag?
Maister
Pace Medlem sedan juni 2001 9 024 inlägg Du får nog förklara lite mer. Är det en matris (array) du menar eller vad?
M Maister Medlem sedan juli 2001 65 inlägg Nej, jag har använt funktionen nedan för att lagra html innehållet i string strHTML.
<%
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.HEMSIDAN.se/index.html", False
objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing
%>
Nu vill jag söka igenom bara EN rad i strängen efter en viss text.
Säg till om du fortfarande inte fattar helt, så ska jag försöka förklara mer utförligt.
Maister
[Redigerat av Maister den 22 jul 2001]
Pace Medlem sedan juni 2001 9 024 inlägg Så det är en vanlig sträng? En sträng har ju inga rader ??
Testa med
Response.Write isArray(strHtml)
och säg vad du får.
M Maister Medlem sedan juli 2001 65 inlägg Får false när jag kör det.
Inga rader?
Hmm, tar jag och kör Response.Write(strHTML) och kollar i källkoden till sidan så finns det rader, precis som html-filen jag läste in.
Maister
[Redigerat av Maister den 22 jul 2001]
Pace Medlem sedan juni 2001 9 024 inlägg Aha! Nu förstår jag hur du menar!
Nej, det är inga rader i strängen, det är egentligen bara vagnreturer (typ av enter-tryckning)
Använd vbCrLf när du ska söka efter "nya rader" med hjälp av Mid så ska det nog lösa sig.
M Maister Medlem sedan juli 2001 65 inlägg Oki
Men hur ska jag använda vbCrLf med Mid?
Mid(sträng, start, längd). Jag är rätt ny inom ASP, så mer info/hjälp skulle uppskattas.
Maister
Pace Medlem sedan juni 2001 9 024 inlägg Tyvärr så kan jag inte hjälpa dig så värst mycket just nu... är upptagen med andra saker
Men så här använder du mid:
Response.Write Mid(strHtml, InStr(vbCrLf, 1))
(Response.Write behöver du inte)
L LarsG Medlem sedan dec. 2000 12 464 inlägg Du kan dela upp sträng i olika bitar om du använder split
rows = split(strHtml,vbCrLf)
rows blir då en array där varje element innehåller en rad.
rows(0) är första raden
rows(1) är andra raden osv.
M Maister Medlem sedan juli 2001 65 inlägg Aha!
Det tänkte jag inte på.
Tack för det LarsG.
Lite frågor angående det dock.
Kan jag söka igenom hela "rows" på en gång, eller får jag loopa och ta en array i taget tills jag hittar det jag söker? Om ja på frågan, kan jag då få fram i vilken array jag befinner mig, så jag kan gå till nästa?
Maister
L LarsG Medlem sedan dec. 2000 12 464 inlägg Du kan loopa över alla element i arrayen om du använder den kodbiten
for i = 0 to ubound(rows)
'behandla raden
next i
och då motsvarar ju i+1 den rad du befinner dig på
Pace Medlem sedan juni 2001 9 024 inlägg Japp, du kan göra så, fast du måste loopa igenom den om du ska läsa igenom hela. Det gör du på detta vis:
For aktuellRad = 1 To Ubound(rows)
Response.Write "på rad " & aktuellRad & " står det " & rows(aktuellRad)
Next
Inga konstigheter här hoppas jag. Fråga om det är något.
Om du vill leta efter en sträng lägger du till följande kod innanför For & Next:
If InStr(rows(aktuellRad), "det du vill söka efter") Then
' hittat!
End If
När du väl har hittat texten du söker kan du avsluta For loopen med "Exit For".
M Maister Medlem sedan juli 2001 65 inlägg Tackar så mycket båda två!
Ni har verkligen varit till stor hjälp.
Nu ska det testas
Maister