26. oktober 2002 - 21:15Der er
10 kommentarer og 1 løsning
function i en løkke ???
Jeg sidder med et problem ang. min index søgemaskine(kører på en accessdb)
Som d r nu leder den efter et keyword. Finder den et viser den et udsnit af teksten. (Som på google), men den viser kun det første keyword i teksten. Jeg ønsker at den udskrev f.eks. første keyword - lede videre efter flere keywords indtil strengen når en max char på omkring 250.
jeg har prøvet at formulere det i pseudokode men ved ikke helt om det er helt korrekt. Men nogen som kan hjælpe mig lidt mere på vej ?
Her er koden!
function FindTextToOutput()
FindStrKeyword = instr(databasetekst, strKeyword) hvorersoegeord = (FindStrKeyword-50) if hvorersoegeord < 1 Then hvorersoegeord = 1 End If
End function
dim strkeyword, strOutput, databasetekst
Lav en løkke som læser gennem strengen databasetekst så længe strKeyword findes i strengen
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Skal den fortælle hvormange gange den støder på keywordet eller skal den udskrive fra keyword og x antal tegn frem i strengen for hver gang den støder på det?
jeg har lige lavet koden lidt bedre og du kan ligge det ind i en function sådan her:
function FindTextToOutput(keyword, tekst)
searchString = tekst findThis = keyword
newString = "" antalTegnFE = 50 'Antal tegn før og efter et søgeord lastEnd = 0 isClose = false startIndex = instr(1, searchString, findThis) do while startIndex > 0 cutFra = 1 if startIndex > antalTegnFE then cutFra = startIndex - antalTegnFE end if if cutFra < lastEnd then cutFra = lastEnd+1 newString = Left(newString,len(newString)-3) isClose = true end if
cutTil = len(searchString) if len(searchString) > (startIndex + len(findThis) + antalTegnFE) then cutTil = startIndex + len(findThis) + antalTegnFE end if lastEnd = cutTil
if isClose = false then if cutFra > 1 then newString = newString & "..." end if newString = newString & Mid(searchString, cutFra, cutTil-cutFra+1) if cutTil < len(searchString) then newString = newString & "..."
eagleeye> Jeg vil kigge på det, men har desværre ikke tid før i morgen middag.(Tirsdag) - Jeg vender tilbage med svar/point hvis jeg får det til at virke!
Det virker helt fint... Hold da op!... Eneste problem. Tror ikke det har noget med funktionen at gøre, men hvis man søger på f.eks. dukker det op i teksten og kan lave en lidt sjov formatering.
Har ikke helt drejet den endnu, men jeg vil i hvert fald sige tak for hjælpen... Point til dig!
searchString = tekst 'Indeholder den tekst som man søger i findThis = keyword 'Indeholder det ord/karaktere man søger efter
newString = "" 'Kommer til at indeholde den "nye" streng antalTegnFE = 50 'Antal tegn før og efter et søgeord lastEnd = 0 'Angiver hvor man kopirede til ved sidste søgeord. isClose = false 'Hvis to ord er indne for (antalTegnFE) tegn af hinanden sættes til true 'Tjek om det man søger efter findes i strengen startIndex = instr(1, searchString, findThis) do while startIndex > 0 cutFra = 1 'Default skal cufFra være 1 'Hvis søgeordet er fundet efter (antalTegnFE) inden i stregen ændres cutFra if startIndex > antalTegnFE then cutFra = startIndex - antalTegnFE 'cufFra tager (antalTegnFE) karakter før søgeordet end if 'Hvis søgeordet er fundet tæt på sidste søge ord if cutFra < lastEnd then cutFra = lastEnd+1 'Kopier fra hvor sidste søgeord sluttede. newString = Left(newString,len(newString)-3) 'Fjern "..." fra newString isClose = true 'to søgeord er fundet inden for (antalTegnFE) karakter af hinanden end if
cutTil = len(searchString) 'Default kopier til enden af søgestrengen. 'Hvis der er flere end (antalTegnFE) efter søgeordet så ændre cutTil if len(searchString) > (startIndex + len(findThis) + antalTegnFE) then 'cutTil ændres så der kun kopier + (antalTegnFE) efter søgeordet. cutTil = startIndex + len(findThis) + antalTegnFE end if 'Gem hvortil man kopieret lastEnd = cutTil
'Hvis to søge ord er længere fra hinanden end (antalTegnFE) så indsæt "..." før teksten if isClose = false then if cutFra > 1 then newString = newString & "..." end if 'Kopier -(antalTegnFE) karakter & søgeord & +(antalTegnFE) katater til newString newString = newString & Mid(searchString, cutFra, cutTil-cutFra+1) 'Hvis cutTil er mindre en længen på søgestrengen indsætte "..." efter if cutTil < len(searchString) then newString = newString & "..."
'Set isClose til default false for at indikere to søgeord er lang fra hinanden isClose = false 'Søg efter næste søgeord startIndex = instr(startIndex+len(findThis), searchString, findThis) loop
how det smuttede 3 linier i på jeg kopiere det ind her... Efter loop skal disse 3 linier med:
'Maker søgeord i newString med fed FindTextToOutput = replace(newString,findThis, "<b>" & findThis & "</b>") end function
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.