webForumDet fria alternativet

Söka/läsa EN rad ur en string

ASP

14 svar · 208 visningar · startad av Maister

Medlem sedan juli 200165 inlägg
Frågan#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

Medlem sedan juni 20019 024 inlägg
#2

Du får nog förklara lite mer. Är det en matris (array) du menar eller vad?

------------------
Peter D

Medlem sedan juli 200165 inlägg
#3

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]

Medlem sedan juni 20019 024 inlägg
#4

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]

Medlem sedan juli 200165 inlägg
#5

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]

Medlem sedan juni 20019 024 inlägg
#6

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

Medlem sedan juli 200165 inlägg
#7

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

Medlem sedan juni 20019 024 inlägg
#8

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

Medlem sedan juli 200165 inlägg
#9

Oki.

Tack för hjälpen iaf!

Maister

Medlem sedan dec. 200012 464 inlägg
#10

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]

Medlem sedan juli 200165 inlägg
#11

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

Medlem sedan juni 20019 024 inlägg
#12

LarsG - räddaren i nöden ;)

------------------
Peter D

Medlem sedan dec. 200012 464 inlägg
#13

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

Medlem sedan juni 20019 024 inlägg
#14

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

Medlem sedan juli 200165 inlägg
#15

Tackar så mycket båda två! :e

Ni har verkligen varit till stor hjälp.
Nu ska det testas

Maister

259 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)