Just nu i M3-nätverket
Jump to content

Söksträngshantering.


Danieln

Recommended Posts

Jag sitter med en funktion som söker i en databas, och jag vill använda operatörerna +, - och " för att kunna göra bra sökningar.

Vad jag vill är alltså att kunna göra precis om man gör på google/altavista mfl.

 

Söksträngen ser ut nått sånt här:

+"svart ask" +låda -kartong

 

+ och minus är inga problem, men när jag ska använda " blir det jobbigt.

 

Är det någon som har gjort nått liknande förut och hur gjorde ni?

 

/Tacksam för svar.

Link to comment
Share on other sites

Bassplayer1960

hmmm...

Du kan ju byta ut alla citattecken i söksträngen till ett annat under funktionens förlopp (med Replace) så att du kan behandla strängen utan det 'jobbiga' citattecknet.

 

Nedanstående exempel byter ut alla " till ´ i strängen strSeek:

 

strSeek = Replace(strSeek, chr(34), "´")

 

Link to comment
Share on other sites

det hjälper ju föga tyvärr eftersom jag ändå inte kan bryta ut just ordet inom fnuttarna i söksträngen.

 

Jag har hittat en väg runt dock. Man bryter ut det som står inom fnuttarna och ersätter mellanslag med valfritt ovanligt tecken för att sedan stoppa in den uttagna strängen i den fullständiga.

när man sedan trycker in söksträngen i sql-koden ersätter man det ovanliga tecknet med mellanslag.

 

om nån nu förstod vad jag sa. =)

 

 

Link to comment
Share on other sites

Jag har länge letat efter ett liknande script.

 

Hade varit överlycklig om du kunde publicera scriptet här, eller maila till mig.

 

x-it@home.se

 

 

 

 

Link to comment
Share on other sites

Precis det är en väg runt det hela...

 

Tror dock att det skall gå att lösa med RegExp om man kan det...

 

- M

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

fritext = Replace(Trim(Request.Form("fritext"))," "," ") & " "

 

Do Until InStr(1,fritext,Chr(34)) = 0

posA = InStr(1,fritext,Chr(34))

posB = InStr(posA+1,fritext,Chr(34))

 

fritext = Left(fritext,posA-1) & Replace(Replace(Mid(fritext,posA,posB-posA+1)," ",Chr(149)),Chr(34),"") & Right(fritext,Len(fritext)-posB)

 

If posA <> 0 AND posB = 0 Then

Exit Do

End If

Loop

fritext = RTrim(fritext)

 

=====================

Jag har inte hunnit buggtesta koden riktigt, tror den buggar ut om man bara har 1 citattecken.

Hoppas koden är tillräckligt lättförståelig.

 

Magnus: Vad är RegExp för något. Är det nått i SQL eller ASP?

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...