Du får nog förklara lite mer. Är det en matris (array) du menar eller vad?
------------------
Peter D
14 svar · 208 visningar · startad av Maister
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
Du får nog förklara lite mer. Är det en matris (array) du menar eller vad?
------------------
Peter D
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]
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.
------------------
Peter D
[Redigerat av Pace den 22 jul 2001]
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]
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.
------------------
Peter D
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
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)
------------------
Peter D
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.
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 22 jul 2001]
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
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å
------------------
essentitia preter non sans multiplicandum
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".
------------------
Peter D