Avatar billede bobbedude Nybegynder
20. juli 2006 - 12:09 Der er 8 kommentarer og
1 løsning

Funktion til at finde bestemte ord

jeg har en liste med ord

maskine
maskiner
jord
grave
gravemaskine
skovl
spade

jeg har så en sætning i en variabel

Temp = "Vi har en skovl og store gravemaskiner samt jord og sand"

Jeg mangler en funktion der kan samle ordene fra filen i en anden variabel.

Temp2 = "gravemaskine jord skovl"
Avatar billede bobbedude Nybegynder
20. juli 2006 - 13:15 #1
Jeg har prøvet med

'get your searched text and the keyword(s)
sMySearchedText = "here is a long funkey sexy pvc text sex"
sMyKeyWord = "funkey sexy"

' you can tokenize this is you have to with
sKeyword = split(sMyKeyWord, " ")

i = 1
Do

' check to see if the keyword in is the searched text, if so return the position (iIndex)
iIndex = Instr(1,sMySearchedText, sKeyword(i))
If iIndex > 0 then

iLength = Len(sKeyword(i))
' set sLeftTemp equal to all text up to the keyword
sLeftTemp = Left(sMySearchedText, iIndex - 1)

' set sRightTemp equal to all text past the keyword
sRightTemp = Mid(iIndex+ iLength + 1,sMySearchedText)

' change to keyword to be highlighted
sTemp = "<span class=""highlight"">" & sKeyword(i) & "</span>"

'Put it all back together
sMySearchedText = sLeftTemp & sTemp & sRightTemp

End If

i = i + 1
Loop


Men jeg har en fejle i linie
sRightTemp = Mid(iIndex+ iLength + 1,sMySearchedText)
Avatar billede bobbedude Nybegynder
20. juli 2006 - 13:30 #2
Avatar billede nielle Nybegynder
20. juli 2006 - 20:37 #3
Et bud:

temp = "Vi har en skovl og store gravemaskiner samt jord og sand"
temp2 = ""

ordListe = "maskine,maskiner,jord,grave,gravemaskine,skovl,spade"

Dim ordListeArr
ordListeArr = Split(ordListe, ",")

Set ordFinder = New RegExp
ordFinder.IgnoreCase = True

For idx = LCase(ordListeArr) To UCase(ordListeArr)
    etOrd = ordListeArr(idx)
    ordFinder.Pattern = "\b" & etOrd & "\b"
    If ordFinder.Test(temp) Then
        If temp2 <> "" Then temp2 = temp2 & " "
        temp2 = temp2 & etOrd
    End If
Next

Set ordFinder = Nothing

Response.Write temp2


Den har den fordel at den ikke bipper hvis ordet ikke er et rigtigt ord, men kun er er en del at et større ord. Reagere f.eks. kun på skovl, ikke skovler, i:

"Vi skovler med en skovl"

Jeg ved ikke om det nødvendigvis er sådan det skal fungere? Men ellers kan det da også tilrettes derefter.
Avatar billede bobbedude Nybegynder
27. juli 2006 - 22:55 #4
Hey Nille det spiller ikke

Microsoft VBScript runtime error '800a000d'

Type mismatch

/test.asp, line 13

Linie 13
For i = LCase(ordListeArr) To UCase(ordListeArr)
Avatar billede bobbedude Nybegynder
28. juli 2006 - 00:12 #5
det spiller nu men kan det laves som en funktion og evt så den tager ord der ligner ?
Avatar billede nielle Nybegynder
28. juli 2006 - 06:56 #6
Det kommer an på hvad der menes med "ord der ligner"?

Men svaret er nu nok det samme: Nej, ikke uden at der skal skrives *meget* mere kode.
Avatar billede nielle Nybegynder
28. juli 2006 - 09:14 #7
Her er en variant som tillader forskellige endelser:

temp = "Vi har en skovl og store gravemaskiner samt jord og sand"
temp2 = ""

ordListe = "maskine,maskiner,jord,grave,gravemaskine,skovl,spade"

Dim ordListeArr
ordListeArr = Split(ordListe, ",")

Set ordFinder = New RegExp
ordFinder.IgnoreCase = True

endelser = "(ende|ere|er|ets|et|e|r|s)?"

For idx = LBound(ordListeArr) To UBound(ordListeArr)
    etOrd = ordListeArr(idx)
    ordFinder.Pattern = "\b" & etOrd & endelser & "\b"
    If ordFinder.Test(temp) Then
        If temp2 <> "" Then temp2 = temp2 & " "
        temp2 = temp2 & etOrd
    End If
Next

Set ordFinder = Nothing

Response.Write temp2
Avatar billede bobbedude Nybegynder
28. juli 2006 - 10:26 #8
det spiller nille smid et svar
Avatar billede nielle Nybegynder
28. juli 2006 - 16:44 #9
Svar :^)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester