Jag har gjort en funktion som läser av en annan hemsida. Nu vill jag kunna läsa av bara en liten inforuta eller något från sidan. Försökte göra en funktion som via InStr plockade ut förekomsterna av två ord. Sen ska den skriva ut allt mellan orden med hjälp av mid(). Tyvärr så går det inte att hitta något av orden i html-koden. Någon som vet varför? Det borde ju funka!? Mm, något sådant borde fungera! Du får då ut positionen av den strängens första tecken. Jag misstänker att det har med gemener och versaler att göra. Problem med InStr()
Dim start, stopp
start = Instr(helatexten,starttext)
stopp = Instr(helatexten,stopptext)
Resultat:
start = 0
stopp = 0Sv: Problem med InStr()
Eftersom InStr() utför en binär sökning som standard då inget annat angetts i din syntax måste du vara säker på att textsträngen du söker innehåller exakt samma tecken som det tecken du söker efter i funktionen InStr(). Tecknet A är ju inte samma som tecknet a.
Detta är skrivet ur huvudet bara så det kan innehålla fel men det borde funka...
Dim sHelaTexten
Dim sNyaTexten
Dim iStart
Dim iSlut
sHelaTexten = "Hej på dig"
iStart = InStr(sHelaTexten,"p")
iSlut = InStr(sHelaTexten,"g")
sNyaTexten = Mid(sHelaTexten, iStart, (iSlut - iStart))
Detta borde ge strängen "på dig"!?Sv:Problem med InStr()
Men fungerar InStr kanske bara med ett tecken (leta efter "p" tex), eller går de att skriva en lång mening o få ut positionen?Sv: Problem med InStr()
sHelaTexten = "Sommar hela veckan"
iStart = InStr(sHelaTexten,"hela")
iSlut = InStr(sHelaTexten,"veckan")
iStart får värdet 8
iSlut får värdet 13
-----------------------
sHelaTexten = "Sommar hela veckan"
iStart = InStr(sHelaTexten,"hela")
iSlut = InStr(sHelaTexten,"veckan")
sNyaTexten = Mid(sHelaTexten, iStart, (iSlut - iStart))
Borde nu ge strängen "hela "!Sv: Problem med InStr()
Testa med följande funktion:
Function Extract(Text, Prefix, Suffix)
Dim PrefixPos
Dim SuffixPos
Dim Start
Start = 1
PrefixPos = InStr(Start, Text, Prefix, vbTextCompare)
If PrefixPos Then
Start = PrefixPos + Len(Prefix)
SuffixPos = InStr(Start, Text, Suffix, vbTextCompare)
If SuffixPos Then
Extract = Mid(Text, Start, SuffixPos - Start)
End If
End If
End Function
Nackdelen med Regular Expression är att du måste "escapa" söksträngen.
Regular expression är matberedaren och instr är kökskniven.